題解 P1908 逆序對 歸併演算法

2022-04-08 01:19:31 字數 1003 閱讀 6879

先吐槽

這題做了兩天,昨天講分治,老師用歸併講了一遍,今天又用樹狀陣列講了一遍

歸併不難,啊啊啊我居然才調出來

歸併兩個陣列時,對於第二個陣列的元素a[c2],它與第乙個陣列中目前還沒歸到總數組裡的元素形成逆序對

c1,c2是指標,對於a[c2],它與a[c1..mid]構成逆序對,貢獻對

臨時陣列c開成全域性變數,函式裡放不下

兩種記錄方式

>函式不返回值,ans開成全域性變數,在每次歸併兩個陣列時增加對數

>函式返回值,ans開在函式裡,賦值遞迴兩個分陣列的返回值之和,再加上歸併兩個陣列時的對數

#include #include 

#include

#include

#include

#include

using

namespace

std;

long

long

n , ans;

int a[500005] , c[500010

];long

long back(int l , int

r)  }

while (c1 <=mid)

c[top++] = a[c1++];

while (c2 <=r)

c[top++] = a[c2++];

for (int i = l ; i <= r ; i++)

a[i] =c[i];

return

ans;

}int

main()

ans = back(1

, n);

cout

<< ans

}

P1908 逆序對 題解

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

P1908 逆序對(歸併排序)

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

P1908 逆序對 歸併排序

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