題目鏈結
該題只需先進行歸併排序,因為如果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 因...