7622 求排列的逆序數 C

2022-08-13 22:54:13 字數 712 閱讀 1623

題目鏈結

該題只需先進行歸併排序,因為如果a[p1]>a[p2]說明a[p2]比區間[p1,m]中的任何元素都小,且p1在p2之前,所以能得出m-p1+1個逆序對。所以在合併區間時加上tot+=mid-i+1; 即可 參考**:

#include #include 

#include

#include

#include

#include

#include

using

namespace

std;

long

long cnt=0

;void merge(long

long a,int s,int m,int e,long

long

tmp)

else

}while(p1<=m)

while(p2<=e)

for(int i=0;i1;++i)

}void mergesort(long

long a,int s,int e,long

long

tmp)

}int

main()

mergesort(a,

0,n-1

,b);

printf(

"%lld\n

",cnt);

return0;

}

7622 求排列的逆序數

7622 求排列的逆序數 總時間限制 1000ms 記憶體限制 65536kb 描述 在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序來評價它們之間的差異。考慮1,2,n的...

7622 求排列的逆序數 分治

描述 在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序來評價它們之間的差異。考慮1,2,n的排列i1,i2,in,如果其中存在j,k,滿足 j k 且 ij ik,那麼就稱...

求排列的逆序數

考慮1,2,n n 100000 的排列i1,i2,in,如果其中存在j,k,滿足 j k 且 ij ik,那麼就稱 ij,ik 是這個排列的乙個逆序。乙個排列含有逆序的個數稱為這個排列的逆序數。例如排列 263451 含有8個逆序 2,1 6,3 6,4 6,5 6,1 3,1 4,1 5,1 因...