51Nod 1019 逆序數 (歸併排序)

2021-09-05 08:53:25 字數 951 閱讀 3823

在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。

如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。給出乙個整數序列,求該序列的逆序數。

input

第1行:n,n為序列的長度(n <= 50000) 

第2 - n + 1行:序列中的元素(0 <= aii <= 10^9)

output

輸出逆序數

sample input

424

31

sample output

4
解題思路 :直接暴力列舉會超時,使用歸併排序來做,每次歸併時求出當前歸併序列的逆序數,總的相加就可以了

ac**:

#includeusing namespace std;

const int maxn=5e4+10;

int a[maxn];

int ans;

void merge(int a,int first,int mid,int last,int temp)//歸併

else

}while(i<=mid)

temp[k++]=a[i++];

while(j<=last)

temp[k++]=a[j++];

for(i=0;i>n;

for(int i=0;i>a[i];

sort(a,n);

cout

}

歸併排序 51nod 1019 逆序數

後面的總結可能有錯誤的地方 發現請指出 畢竟 也是從別人呢裡搬的有 也有自己的總結!1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱...

逆序數(51Nod1019) 歸併排序

1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數...

51Nod 1019 逆序數 歸併排序

1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數...