P1908 逆序對 歸併排序

2021-10-09 11:45:45 字數 1237 閱讀 1466

題目描述

貓貓 tom 和小老鼠 jerry 最近又較量上了,但是畢竟都是成年人,他們已經不喜歡再玩那種你追我趕的遊戲,現在他們喜歡玩統計。

最近,tom 老貓查閱到乙個人類稱之為「逆序對」的東西,這東西是這樣定義的:對於給定的一段正整數序列,逆序對就是序列中 ai>aja_i>a_jai​>aj​ 且 iupdate:資料已加強。

輸入格式

第一行,乙個數 nnn,表示序列中有 nnn個數。

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

輸出格式

輸出序列中逆序對的數目。

輸入輸出樣例

輸入 #1

65 4 2 6 3 1

輸出 #1

說明/提示

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

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

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

請使用較快的輸入輸出

應該不會 o(n2)o(n^2)o(n2) 過 50 萬吧 by chen_zhe

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int maxn =

5e5+10;

int a[maxn]

;int b[maxn]

;int c[maxn]

;int d[maxn]

;ll n, ans;

void

discrete

(int

*s)}

void

merge_sort

(int l,

int r)

while

(i <= mid) d[k++

]= c[i++];

while

(j <= r) d[k++

]= c[j++];

for(

int i = l; i <= r; i++

) c[i]

= d[i];}

intmain()

P1908 逆序對(歸併排序)

p1908 逆序對 歸併排序 感覺歸併排序和二叉樹神似,歸併排序還是用的是插入排序的原理 歸併排序的時間複雜度見 o nlogn include includeusing namespace std define maxn 0x3333333 int a maxn rrr maxn ans 0,n ...

洛谷 P1908 逆序對(遞迴,歸併排序)

題目 標籤 遞迴 歸併排序 資料量很大,普通的比較很容易超時。題意是比較找出 a ia i ai a ja j aj 且 i j 的有序對,因此只需比較a ia i ai 和後面的數即可,所以可以用歸併排序,在合併的時候比較。注意 記錄逆序對的數目ans要用long long 型,雖然資料量n在in...

洛谷P1908 逆序對 歸併排序 樹狀陣列

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