[Cqoi2011]动态逆序对

Time Limit: 10 Sec  Memory
Limit: 128 MB
Submit: 6058  Solved: 2117
[Submit][Status][Discuss]

请点击那里输入图片描述

Description

对此类别A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的3个排列,遵照某种顺序依次删除m个成分,你的任务是在每趟删除3个要素以前总结整个系列的逆序对数。

后日下班偷了下懒,没有整理文件就一直下班回家了。前天早晨一打开总结机,看到乱到爆炸的桌面整个人都倒霉了。

Input

输入第①行李包裹涵五个整数nm,即初叶成分的个数和删除的要素个数。以下n行每行李包裹罗1个1到n里头的正整数,即起来排列。以下m行每行三个正整数,依次为每一遍删除的成分。

 

相信我们都自然有那般的阅历:某时某刻某分你必要某份文件,不过无论是是寻觅照旧翻遍所有可能存在的文件夹都坚决找不到。

Output

 

输出包罗m统计,行,依次为除去每种成分在此以前,逆序对的个数。

时而充满热情的劳作景况变成心态爆炸各类不在状态就不说了,就算因为那样一份原本不太首要的公文使得工作受损更为苦不堪言。

Sample Input

5 4
1
5
3
4
2
5
1
4
2

请点击那里输入图片描述

Sample Output

5
2
2
1

样例解释
(1,5,3,4,2)(1,3,4,2)(3,4,2)(3,2)(3)。

在微型计算机早已化为工作的中央工具的今日,无论是个人的知识管理依旧协会的事务协作等等,如何对电脑文件进行连串化管理是十三分须求的。

HINT

 

N<=100000 M<=50000

 

创造一个相符本人的文本管理种类,是高效办公进步小编工效乃至通往更高级职分务的必经之路。

Source

 

题解:

   普通的树状数组,不可能记录地点,不能精晓三次今后记录的是由此地方的新闻,

   一遍删除的时候,不可能明了怎么着值是比它小的,因为职分的影响,

   所以必要树套树,在开一层职位,那样就足以了,动态开点,n
logn log n的长空复杂度。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<cmath>
 6 
 7 #define N 100007
 8 #define M 10000007
 9 using namespace std;
10 int n,m,cnt;
11 int a[N],id[N],bit[N],lson[M],rson[M],tree[M];
12 long long ans;
13 
14 int lowbit(int x){return x&-x;}
15 void addy(int &u,int l,int r,int x,int y)
16 {
17     if(!u)u=++cnt;
18     if(l==r){tree[u]+=y;return;}
19     int mid=(l+r)>>1;
20     if(x<=mid) addy(lson[u],l,mid,x,y);
21     else addy(rson[u],mid+1,r,x,y);
22     tree[u]=tree[lson[u]]+tree[rson[u]];
23 }
24 void addx(int x,int y,int val)
25 {
26     for (int i=x;i<=n;i+=lowbit(i))
27         addy(i,1,n,y,val);
28 }
29 int queryy(int u,int l,int r,int i,int j)
30 {
31     if(!u) return 0;
32     if(l==i&&r==j) return tree[u];
33     int mid=(l+r)>>1;
34     if(j<=mid) return queryy(lson[u],l,mid,i,j);
35     else if(i>mid) return queryy(rson[u],mid+1,r,i,j);
36     return queryy(lson[u],l,mid,i,mid)+queryy(rson[u],mid+1,r,mid+1,j);
37 }
38 int queryx(int x,int l,int r)
39 {
40     int ans=0;
41     for (int i=x;i>=1;i-=lowbit(i))
42         ans+=queryy(i,1,n,l,r);
43     return ans;
44 }
45 int main()
46 {
47     scanf("%d%d",&n,&m),cnt=n;
48     for(int i=1;i<=n;i++)
49     {
50         scanf("%d",&a[i]);
51         ans+=(long long)queryx(i-1,a[i]+1,n);
52         id[a[i]]=i;
53         addx(i,a[i],1);
54     }
55     while(m--)
56     {
57         printf("%lld\n",ans);
58         int x;scanf("%d",&x);
59         ans-=(long long)queryx(id[x]-1,x+1,n);
60         ans-=(long long)queryx(n,1,x-1);
61         ans+=(long long)queryx(id[x]-1,1,x-1);
62         addx(id[x],x,-1);
63     }
64 }

 

更何况,对于像自家如此的狮子座加密集恐惧症抓好迫症来说:笔者历来不是在打点桌面和文件好啊!不收拾根本不也许工作!

请点击那里输入图片描述

好了说正事,很多新人因为工作量十分小照旧行业性情天天须求接触的报表和文书档案不多。往往简单的丢进当天日期命名的单层级文件夹了事,甚至一向丢在桌面定期拖进回收站。

但是固然每天惟有个位数的文本,一天天工作下去也会是四个10分害怕的数字。假使只是只有的丢在有个别文件夹,或然直接狂暴清理,万一必要的时候的确会哭都哭不出来。

学会将承办的工作文件、与本人相关的文本和自作者的做事战果等开始展览分类整理和存档是13分至关心珍视要的行事技术。

请点击这里输入图片描述

想要构建一个清楚的文本管理结构种类,我们须求学会两件事:科学的命名文件、合理的开始展览分拣文件。

哪些正确的给文件命名?

多多同校都很少在意的文件名称其实在推搡大家分类整理八个公文的时候有很神奇的职能,科学的文件命名能够知足四大首要功用:辨识、区分、管理与一定。

识假:通过文件名称便可见文件的主干消息。

有别于:将其与别的文件分别开来。

管住:有限协助文件种类分类定位,易总括、无遗漏。

一定:可随机定位到文件保留的岗位。

平时状态大家为1个文件命名往往都以依照文件内容来定名,如《XX会议记录》。可能有早晚意识的同室只怕会使用上边包车型客车方式对文本和文书夹举办命名:

文件名=类别号+文件名;如:《01-会议记录》、《02-会议员联盟系人名单》。

文件夹名=类别号+文件夹名;如:《01-随笔》、《02-小说》。

可是当文件数量较多时,那种单层级的命有名的模特式是不适用的。大家须求动用多层级的命名格局。

貌似的话大家会采纳3W的组织,即When,Who,What。具体如下:

时光-所属项目名称-文件名称-最后肯定人or版本号如:

20180110-分享笔记-文件整理-不二01

请点击那里输入图片描述

When:文本的开创时间是一项重庆大学音讯,一般提议把时光命名按年月日逐条统一为8或5人数字。如:20180110或180110。

别的时间建议坐落文件名最前端,那样系统会将文件自动文件按命名时间顺序排列,查找会很方便。

What:即文件内容,个人在此部分一般会利用“所属项目名称/连串-文件名称”八个层级举行发挥。

不要还怕麻烦,命名是百分之百文件的摘要。那样的抒发能够一眼看出文件所属体系,查找额时候会要命方便。

Who:文本所关联的珍视点,宗旨和内容是密切相关的是寻找的机要内容。提出最棒能够用“全名+职分”的不二法门。如“XX投资-王校长”。

自然,大家也能够依照自己的其真实情状形自行开始展览调整文件名的要素景况,或追加或减少都足以。

例如我们普通工作中常常会触发部分二回性使用的零时文件,那时候大家就可以在文件命中加进“属性”的因素。如“待办XX”或“零时XX”等。

但一旦您根据科学的苦丁的方式命名梳理过的文件,你急忙就会意识:整个文件类别一目领悟,酸爽无比。

请点击那里输入图片描述

实现文件命名之后,大家就能够继承拓展文件的重新整建存档工作了。

怎么客观的分类整理文件?

注:因为个人有记录保留的习惯,那里本人要说的盘整分类首即使以存档方便日后再也调取为主。想要建立协调的文书档案种类先要驾驭那多少个文件是值得留存的。

诚如的话小编会将具有的公文归为三类:

Inbox:次第渠道来的一时文件,也许必要处理还未处理的文件。每一日下班前清理二次那个文件夹,当开头先导处理那件事时,就挪到「实行中」文件夹;

进行中:正在改动、正在复苏、等待反馈结果的文本。处理达成后就足以整理存档,转入「归档」文件夹;

待归档:待整治的公文。定期将内部的公文归档到有关目录下。

哪些文件是要求整理存档的?作者的提出是下列两种档次的文件一定期存款档:

曾经成功的工作文件(备份):留作记录,也足以预防不时之需,但一定如若最后定稿上交的可怜版本;

做事中收受的对您立时工作有影响的文本(备份):会一贯影响您的做事战果,也正是说是义务源之一,保存也是老大有要求的;

办事总计:是大家成人的印痕也是我们劳动成果的结晶,既有思念意义也有科学的价值;

干活中收载的有价值的素材:是您成长之路的机要积累,也是你存档中最有实在价值的公文。

请点击这里输入图片描述

除此以外一些文本大家能够遵照本身的习惯和喜欢来进展抉择,比如事先一段时间我会记录自个儿的笔触变化,那时候作者会将每2次的文稿都实行留存整理。

明明了友好有哪些东西必要“收拾”后,我们就能够真正的出手来拓展规整了。因为后面大家实际上早已做了汪洋的备选工作,导致现在开始展览整治已经化为一件很不难的业务:

请点击这里输入图片描述

就不啻我们早就把全部的事物都已经梳理好了,今后要做的正是手无寸铁一个适当的盒子,然后把她们放进去。

《金字塔原理》的小编芭芭拉·名托在书中一度提到过一种分类标准:MECE.

MECE,是 Mutually Exclusive Collectively
Exhaustive,中文意思是「相互独立,完全穷尽」。

简单来讲正是你供给不重复也不漏掉的把您的富有文件放到差异的文本夹里。

譬如作者个人电脑的磁盘分类:C盘、生活、工作。

C盘:只用来放手电脑的系统文件;

生活盘:用来存放工作之外的文书档案和处理器上的局地客户端文件;

工作盘:只用来存放现阶段工作休戚相关的各个文件。

然后挨家挨户磁盘中大家得以依照我们的文件名进行文件夹的层级创立。比如工作盘中得以分文“工应战果备份”、“工作计算备份”、“资料备份”,也能够分为“项目文件”、“资料文件”然后再遵照不相同类型成立子文件夹。

请点击那里输入图片描述

对于各样磁盘中级别稍低的子文件夹,大家得以遵循“主要性原则/时间类别原则/资料来源举办分拣”。

重点原则:办事中对此大家团结的话根本始终是有分其他,比如我们按承担义务的大大小小分为“格外首要/首要/普通/其余”。

时光体系原则:遵照时间和日期分类,比如文件夹层级为“年>月>日”。

资料来自原则:依照文件的根源举办归类和文件夹的创制,比如“From老董,From人事,From前台”等等。

自家个人比较欣赏的是比照时间日期来拓展文件分类,简明扼要的还要因为个人有列工作铺排表的习惯也会相比便利寻找。

末段在给大家展开局地安利:

在进展阶段性工作的时候,笔者一般会创制四个尤其的公文夹:“待办事项”、“首要参考”。

阶段性工作中大家一般都会有系统性的职务,难免会开启多职务格局。所以作者会用“待办事项”文件夹来帮衬协调更好的开始展览拍卖多职分。在这一个文件夹中本身一般会动用“主要性原则”来拓展文件分类。

最首要参照则是在我们开始展览系统新的办事的时候通常会需求部分材料或许数额作为参照,那时候小编会将它们放在首要参考的文书夹中有益调取。

请点击那里输入图片描述

接下来是援引七款小应用:“Everything”“彩色文件夹”。

“伊夫rything”是一款文件、文件夹名称火速搜索软件。在搜索此前就会把所用的文书和文件夹都列出来。在搜寻框输入文字后,它就只呈现过滤后的公文和目录。

“彩色文件夹”是一款能够用来援助你随便改变文件夹颜色的软件。它能够帮忙大家更好的分别区别类其他文本夹,还足以调整大家的心气哈哈。