[題解]洛谷P1908 逆序對
阿新 • • 發佈:2019-01-20
sca ans www blank tar ont 逆序對 .org clu
原題
傳送門
思路
可以用歸並排序求逆序對個數
代碼
#include<cstdio> using namespace std; long long n,ans=0; void sort(long long A[],long long L,long long R,long long T[]) { if(R-L>1) { long long M=L+(R-L)/2; long long p=L,q=M,i=L; sort(A,L,M,T); sort(A,M,R,T);while(p<M||q<R) { if(q>=R||(p<M&&A[p]<=A[q])) T[i++]=A[p++]; else { T[i++]=A[q++]; ans+=M-p; } } for(i=L; i<R; i++)A[i]=T[i]; } } int main() { long longA[500001],T[500001]; scanf("%lld",&n); for(long long i=0; i<n; i++) scanf("%lld",&A[i]); sort(A,0,n,T); printf("%lld",ans); return 0; }
[題解]洛谷P1908 逆序對