time limit: 1 sec memory limit: 128 mb
submit: 565 solved: 117
[submit][status][web board]
在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數不小於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。
如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。給出乙個整數序列,求該序列的逆序數。
多組測試資料
每組測試資料分兩行,第一行乙個正整數n(n <= 50000)
第二行有n個元素( 0 <= a[i] <= 10^9)
每組測試資料輸出一行表示逆序數
4 2 4 3 1 3 1 1 1
4 3//歸併排序
#include#include#define maxsize 50005
int a[maxsize],b[maxsize]; //題目上雖然資料型別比較大,一開始想用long long,但是函式形參範圍太大可能會
//有錯誤,而且用int也a了,可能沒關係
int cnt;
void mergearray(int*a,int first,int last)
{
int i=first,mid=(first+last)/2;
int j=mid+1,k=first;
while(i<=mid&&j<=last)
{if(a[i]**段 小部件
[dàimǎ duàn xiǎo bùjiàn]
code section widget
歸併排序 逆序數
對於數列a,將其二分地拆分為b,c 先將b,c分別排序好,再合併b,c即為總的排序,不過在合併的過程中我們可以算出逆序數哦。其原理網上很多,我這裡不再贅述,只給出實現 include include define ll long long using namespace std ll mergeso...
逆序數(歸併排序)
分而治之 分 每次從中間劃分開,直到有序為止,即乙個整數 void merge int s,int left,int right 治重新定義乙個a陣列,儲存排序完的合併陣列,void sort int s,int left,int mid,int right while i mid a k s i ...
求逆序數 逆序數 歸併排序
求排列的逆序數 分治 一 題目描述 總時間限制 1000ms 記憶體限制 65536kb 描述 在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序來評價它們之間的差異。考慮1...