树状数组求逆序数
2017-05-24 16:52
351 查看
#include <iostream> #include <cstring> #include <algorithm> #define N 100010 using namespace std; int c ,n; int aa ; struct Node { int orde,value; }a ; int cmp(Node a,Node b) { return a.value<b.value; } int low_bit(int x) { return x&(x^(x-1)); } void update(int x,int y) { for(int i=x;i<=n;i+=low_bit(i)) c[i]+=y; } int Sum(int x) { int sum=0; for(int i=x;i>0;i-=low_bit(i)) sum+=c[i]; return sum; } int main() { int x; cin>>n; //离散化 for(int i=1;i<=n;i++) { a[i].orde=i; cin>>a[i].value; } sort(a,a+n+1,cmp); int ans=0; memset(c,0,sizeof(c)); for(int i=1;i<=n;i++) { aa[a[i].orde]=i; } for(int i=1;i<=n;i++) { update(aa[i],1); ans+=i-Sum(aa[i]); } cout<<ans<<endl; return 0; } /* 5 9 1 0 5 4 */
相关文章推荐
- 归并排序 树状数组 求逆序数
- CF Gym 100463A (树状数组求逆序数)
- hdu 2689 sort it(树状数组 逆序数)
- 光荣的梦想 (树状数组求逆序数和)
- hdu 1394 Minimum Inversion Number 树状数组求逆序数对(原理)
- POJ 2299 Ultra-QuickSort 求逆序数 树状数组
- HDU 2838 (树状数组求逆序数)
- poj 2299 离散化+树状数组求逆序数
- 树状数组求逆序数的模板
- hdu 2689树状数组求逆序数
- hdu 2838 树状数组求逆序数及交换位置产生移动的数的和
- POJ 2299 <离散化+树状数组求逆序数对>
- HDU 1394 - Minimum Inversion Number(树状数组求逆序数)
- HDU2689 Sort it(树状数组求逆序数)
- codeforces 362 C. Insertion Sort(树状数组,逆序数)
- 归并排序,树状数组,求逆序数 (openjudge 7662)
- 树状数组求逆序数
- HDU 1394 Minimum Inversion Number (树状数组求逆序数)
- 树状数组 求逆序数
- 蓝桥杯--历届试题 小朋友排队(树状数组求逆序数)