求逆序數(分治法求解)

2021-10-05 06:49:32 字數 885 閱讀 1387

題目描述

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。 即輸出p%1000000007

輸入描述:

題目保證輸入的陣列中沒有的相同的數字

資料範圍:

對於%50的資料,size<=10^4

對於%75的資料,size<=10^5

對於%100的資料,size<=2*10^5

示例1

輸入複製

1,2,3,4,5,6,7,0

輸出複製

7解析:

public

intinversepairs

(int

array)

public

intfenzhi

(int

array,

int[

]fuzhi,

int low,

int high)

else

fuzhi[copy--

]=array[j--];

}while

(i>=low)

fuzhi[copy--

]=array[i--];

while

(j>mid)

fuzhi[copy--

]=array[j--];

for(

int k=low;k<=high;k++

) array[k]

=fuzhi[k]

;return

(jishu+left+right)

%1000000007

;}

分治法求逆序數

include include include include using namespace std int arr2 100 在對序列進行二路歸併排序的時候,要將序列拆分成若干子串行,先將子串行排序,再合併子串行構成最終排序後的序列。二路歸併演算法還有乙個特點,在進行歸併操作時候的兩個子串行是有...

求排列的逆序數 分治

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

求排列的逆序數(分治)

題目描述 考慮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...