给百度做网站的公司,apt 安装wordpress,北京住房城乡建设厅网站,企业seo网络营销树状数组求逆序数#xff0c;先排个序#xff0c;从大到小往插#xff0c;计算在他的前面有几个比他大#xff0c;就是他的逆序数。 #xff08;PS#xff1a;最近对数量越来越不敏感了#xff0c;老在这上面错。多做题#xff0c;不能断啊#xff09; 1 #include 先排个序从大到小往插计算在他的前面有几个比他大就是他的逆序数。 PS最近对数量越来越不敏感了老在这上面错。多做题不能断啊 1 #include cstdio2 #includealgorithm3 #include vector4 using namespace std;5 typedef long long i64;6 struct po7 {8 int num,ord;9 } p[500050];
10 int a[500050];
11 templatetypename T int
12 struct BIT {
13 vectorT a;
14 void init(int n) {
15 vectorT(n1).swap(a);
16 }
17 void add(int i, T v) {
18 for(int j i 1; j (int)a.size(); j (j|(j-1)) 1) {
19 a[j] v;
20 }
21 }
22 T sum(int i) const {
23 T ret T();
24 for(int j i; j 0; j j (j-1)) {
25 ret a[j];
26 }
27 return ret;
28 }
29 T get(int i) const {
30 return sum(i1) - sum(i);
31 }
32 void set(int i, T v) {
33 add(i, v - get(i));
34 }
35 };
36 int cmp(po a,po b)
37 {
38 if(a.numb.num) return 1;
39 else return 0;
40 }
41 int main( ) {
42 int n;
43 while( scanf(%d, n) ! EOFn )
44 {
45 BITint bit;
46 bit.init(n);
47 for(int i0;in;i)
48 {
49 scanf(%d,p[i].num);
50 p[i].ordi;
51 }
52 sort(p,pn,cmp);
53 i64 summ0;
54 for(int i0;in;i)
55 {
56 bit.set(p[i].ord,1);
57 summbit.sum(p[i].ord);
58 }
59 printf(%lld\n,summ);
60 }
61 return 0;
62 } 转载于:https://www.cnblogs.com/Acgsws/p/3221893.html