逆序數和線段樹的關係

考慮一下逆序數的定義:數字

{ 2, 4, 3, 1 } 

分別是(2,1), (4,3), (4,1), (3,1)

也就是說針對一個數。判斷在這個序列中這個數位置後面的數有多少個比它小。

也就是說針對一個數。判斷在這個序列中這個數位置以前有多少個數比它大。

 

那就是詢問當前數~n 區間上的出現了多少個數。 (因爲咱們詢問順序是從前到後(左到右)。因此在當前數前面且比它大的都更新過了。)

注意這裏把極端列爲n。 若是不是n就要離散化。

 

知道逆序數。求原排列。

 

從小到大開始肯定。

好比說。 4的逆序爲3。

按照逆序數的等價說法。

在序列中 4 這個數字位置以前有3個數比4大。

那咱們初始化線段樹。葉子節點爲1。其他節點爲區間和。

從左到右 查到 當前空位( 1爲空位。 0爲非空。)

其中更新時候 把第當前數的空位置清爲0。非空便可。

相關文章
相關標籤/搜索