nyoj 177 求逆序數

2021-07-30 12:04:57 字數 959 閱讀 8200

時間限制:

2000 ms  |  記憶體限制:

65535 kb

難度: 5

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

現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。

比如 1 3 2 的逆序數就是1。

輸入

第一行輸入乙個整數t表示測試資料的組數(1<=t<=5)

每組測試資料的每一行是乙個整數n表示數列中共有n個元素(2〈=n〈=1000000)

隨後的一行共有n個整數ai(0<=ai<1000000000),表示數列中的所有元素。

資料保證在多組測試資料中,多於10萬個數的測試資料最多只有一組。

輸出輸出該數列的逆序數

樣例輸入

2

21 1

31 3 2

樣例輸出

0

1

#include #include long long a[1000005];

long long b[1000005];

long long count;

void merge(long long *a,int l,int mid,int r)

} //假如第1個有序區仍有剩餘,則直接全部複製到 b陣列

while(i<=mid)

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

//同理,有剩餘則放到 b陣列

while(j<=r)

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

//將排好的序列,重新放到原陣列的 l和 r區間

for(int t=l;t<=r;t++)

a[t]=b[t];

}void mergesort(long long *a,int l,int r)

{ if(l

NYOJ 求逆序數

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。比如 1 3 2 的逆序數就是...

nyoj117求逆序數

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。比如 1 3 2 的逆序數就...

NYOJ117 求逆序數

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。比如 1 3 2 的逆序數就...