洛谷 P1908 逆序對(樹狀陣列,離散化)

2021-10-06 19:15:37 字數 841 閱讀 2440

求大小為n的陣列中有多少個逆序對。

因為n<=1e5,但是a[n]<=1e9,而且這道題和每乙個a[i]的具體數值並沒有任何關係,所以我們要用到離散化思想,將a[n]中的數字排序後重新賦值。之後就是正常的樹狀陣列求逆序對方法。

#include

using

namespace std;

#define int long long

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const

int n=

5e5+5;

const

int inf=

0x3f3f3f3f

;int n,num=

0,a[n]

,t[n]

,arr[n]

;int

cmp(

int a,

int b)

intlowbit

(int k)

void

update

(int p)

}int

getsum

(int p)

return res;

}signed

main()

sort

(t+1

,t+n+

1,cmp)

;for

(int i=

1;i<=n;i++

)for

(int i=

1;i<=n;i++

) cout

}

洛谷P1908 逆序對(樹狀陣列)

題目描述 貓貓tom和小老鼠jerry最近又較量上了,但是畢竟都是成年人,他們已經不喜歡再玩那種你追我趕的遊戲,現在他們喜歡玩統計。最近,tom老貓查閱到乙個人類稱之為 逆序對 的東西,這東西是這樣定義的 對於給定的一段正整數序列,逆序對就是序列中ai aj且i輸入輸出格式 輸入格式 第一行,乙個數...

P1908 逆序對 樹狀陣列

p1908 題目描述 貓貓 tom 和小老鼠 jerry 最近又較量上了,但是畢竟都是成年人,他們已經不喜歡再玩那種你追我趕的遊戲,現在他們喜歡玩統計。最近,tom 老貓查閱到乙個人類稱之為 逆序對 的東西,這東西是這樣定義的 對於給定的一段正整數序列,逆序對就是序列中 ai aj且 iupdate...

P1908 逆序對 (樹狀陣列)

比較喜歡線段樹,懶得用樹狀陣列 只會套模板,位運算的精髓沒有領悟到 一直沒有記錄樹狀陣列 又得撿回來,趁這道題記錄一下模板,為三維偏序cdq套樹狀陣列鋪墊一下。解題思路 先對原陣列a從大到小排序,依次新增進樹狀陣列c裡,每次求字首和的結果就是 當前數的逆序對的個數。例如資料 55,44,22,66,...