[luogu1908]逆序对(upper_bound)

Posted FySeA

tags:

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

 

对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对

用upper_bound法求逆序对,Code很棒

据说有用树状数组和线段树写逆序对的,这里用upper_bound水一发。

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<vector>
 4 #include<algorithm>
 5 using namespace std;
 6 int n;
 7 vector<int> shu;
 8 int main(){
 9     scanf("%d",&n);    
10     long long s=0,a;
11     int kk[60000];
12     for(int i=0;i<n;i++){
13         scanf("%d",&kk[i]);//核心代码:
14         s+=shu.end()-upper_bound(shu.begin(),shu.end(),kk[i]);
15         shu.insert(upper_bound(shu.begin(),shu.end(),kk[i]),kk[i]);
16     }
17     printf("%d",s);
18     return 0;
19 }

 

以上是关于[luogu1908]逆序对(upper_bound)的主要内容,如果未能解决你的问题,请参考以下文章

[luogu1908]逆序对(upper_bound)

luogu P1908 逆序对 |树状数组

1/31 P1908逆序对 P1774

P1908 逆序对-(树状数组)

P1908 逆序对-(cdq分治)

树状数组 P1908 逆序对