归并排序 逆序数
Posted bxd123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序 逆序数相关的知识,希望对你有一定的参考价值。
很好理解:
int n,a[500010],c[500010]; long long ans; void msort(int L,int R) { if(L==R)return ; int mid=(L+R)>>1; msort(L,mid); msort(mid+1,R); int i=L,k=L,j=mid+1; while(i<=mid&&j<=R) if(a[i]<=a[j]) c[k++]=a[i++]; else c[k++]=a[j++],ans+=mid-i+1; while(i<=mid) c[k++]=a[i++]; while(j<=R) c[k++]=a[j++]; rep(i,L,R) a[i]=c[i]; } int main() { int n; RI(n); rep(i,1,n) RI(a[i]); msort(1,n); cout<<ans; return 0; }
以上是关于归并排序 逆序数的主要内容,如果未能解决你的问题,请参考以下文章