码迷,mamicode.com
首页 > 编程语言 > 详细

[树状数组]求逆序对

时间:2019-01-25 13:03:14      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:span   one   ++   names   逆序   return   gif   class   树状数组   

ci 的意思是在前lowbit 中元素的个数。

然后往前i个中的sum就是小于等于这个i的个数

这个数的位置-小于等于这个i的个数 就是前面大于这个数的个数

小于等于这个数的个数肯定比 这个数的位置要小。

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<string>
 5 #include<cstring>
 6 #include<queue>
 7 #include<map>
 8 #include<set>
 9 #include<algorithm>
10 using namespace std;
11 typedef long long ll;
12 const int N=1000+10;
13 int c[N],n,aa;
14 int lowbit(int x)
15 {
16     return x&-x;
17 }
18 void insert(int i,int x)
19 {
20     while(i<=n)
21     {
22         c[i]+=x;
23         i+=lowbit(i);
24     }
25 }
26 int getsum(int i)
27 {
28     int sum=0;
29     while(i>0)
30     {
31         sum+=c[i];
32         i-=lowbit(i);
33     }
34     return sum;
35 }
36 int main()
37 {
38     while(scanf("%d",&n)!=EOF)
39     {
40     int ans=0;
41     memset(c,0,sizeof(c));
42     for(int i=1;i<=n;i++)
43     {
44         scanf("%d",&aa);
45         insert(aa,1);
46         ans+=i-getsum(aa);
47     }
48     printf("%d\n",ans);
49     }
50     return 0;
51 }
View Code

挖个坑下回把归并和快排的求逆序对放下来。

[树状数组]求逆序对

标签:span   one   ++   names   逆序   return   gif   class   树状数组   

原文地址:https://www.cnblogs.com/Kaike/p/10318724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!