洛谷 1908 逆序對

2022-05-26 08:42:11 字數 1228 閱讀 2252

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

第二行n個數,表示給定的序列。序列中每個數字不超過10910^9109

輸出格式:

給定序列中逆序對的數目。

輸入樣例#1:複製

6

5 4 2 6 3 1

輸出樣例#1:複製

11

對於25%的資料,n≤2500n \leq 2500n≤2500

對於50%的資料,n≤4×104n \leq 4 \times 10^4n≤4×104。

對於所有資料,n≤5×105n \leq 5 \times 10^5n≤5×105

請使用較快的輸入輸出

應該不會n方過50萬吧 by chen_zhe

題解:搬來一篇,用到了離散化

正常的暴力思路我就不講了

另類的暴力思路(20分):桶排思想,每拿到乙個值放入桶中,統計所有大於這個數的數量,然後累加

優化:離散化,因為n<=40000,所以只需要存那個數在陣列中是第幾大就好了。(然而並沒有什麼用

正解(100分 56ms 2mb):樹狀陣列(錯誤程式!警告!)

5 4 2 6 3 1

詳見

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int n,m,c[40005],a[40005],b[40005

];void add(register int

x)int sum(register int

x)

bool cmp1(int x,int

y)int

main()

sort(a+1,a+n+1

,cmp1);

for(int i=1;i<=n;i++)

printf("%d

",ans);

return0;

}

逆序對 洛谷 1908

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

洛谷 P1908 逆序對

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

洛谷P1908 逆序對

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