sort it 树状数组+逆序对

Posted xxrll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sort it 树状数组+逆序对相关的知识,希望对你有一定的参考价值。

 

sum[i]是1-i所有1的和,而i-sum[a[i]]就是在a[i]后面的数,即在i之前出现,却比他大的数。1是加在a[i]上,即i实际应该放的位置。而c[i]是为sum做准备的

技术分享图片
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<iostream>
 5 #include<stdlib.h>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<string>
10 #include<set>
11 #include<cctype>
12 #include<sstream>
13 #define mem(a) memset(a,0,sizeof(a))
14 #define LL long long
15 using namespace std;
16 const int N=1e6+5;
17 int a[N],c[N],n;
18 int lowbit(int x)
19 {
20     return x&-x;
21 }
22 void add(int x,int a)
23 {
24     while(x<=n) c[x]+=a,x+=lowbit(x);
25 }
26 int sum(int x)
27 {
28     int ans=0;
29     while(x)
30     {
31         ans+=c[x];
32         x-=lowbit(x);
33     }
34     return ans;
35 }
36 int main()
37 {
38     while(~scanf("%d",&n))
39     {
40         mem(c);
41         int ans=0;
42         for(int i=1;i<=n;i++)
43         {
44            scanf("%d",&a[i]);
45            add(a[i],1);
46            ans+=i-sum(a[i]);
47         }
48         printf("%d
",ans);
49     }
50     return 0;
51 }
View Code

 

以上是关于sort it 树状数组+逆序对的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2689Sort it 树状数组 逆序对

sort it 树状数组+逆序对

hdu2838Cow Sorting(树状数组+逆序数)

归并排序,树状数组 两种方法求逆序对

树状数组求逆序对

树状数组求逆序对