樹狀陣列求逆序數

2021-08-04 07:08:40 字數 883 閱讀 3115

chikachika說希望和我一起做學園偶像的時候,我真的很開心。——watanabeyouwatanabeyou

曜是千歌的青梅竹馬,但是aqoursaqours成立以後,千歌似乎總是與梨子在一起,而把曜冷落了。

為了讓千歌知曉自己的心意,曜醬決定做一件大事!

她決定把乙個給定的11~nn的排列(1≤ai≤n1≤ai≤n,且aiai各不相同),

用最少的交換次數,變換成另乙個11~nn的排列。並且,每次只交換相鄰的兩個元素。

也許這樣做了以後,千歌能更多地注意自己吧。曜這樣想。

input

第一行是乙個整數nn,

第二行是乙個長度為nn的11~nn的排列aa,

第三行是另乙個長度為nn的11~nn的排列bb。

output

輸出一行,乙個整數,表示最少的交換次數。

sample input

4

2 3 1 4

3 2 1 4

33 2 1

1 2 3

sample output
1

3

#include

const int maxn = 1e5 + 500;

typedef long long ll;

ll a[maxn],b[maxn],c[maxn];

int n;

ll fun(ll a[maxn])

returns;}

int main()

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

ll ans = fun(b);

printf("%lld\n", ans);

}}

樹狀陣列求逆序數

逆序數就是數中各位在它前面有多少個數比它大,求出這些元素個數之和。今天看了個樹狀陣列,可以很好的解決這個問題,普通方法需要o n 2 複雜度,用樹狀陣列只需要o nlongn 樹狀陣列實際上還是乙個陣列,只不過它的每個元素儲存了跟原來陣列的一些元素相關的結合值。若a為原陣列,定義陣列c為樹狀陣列。c...

樹狀陣列 求逆序數

一.樹狀陣列介紹 1 性質 樹狀陣列本質上就是乙個陣列,它與普通陣列不同之處在於它的某些元素維護的是一段區間的資訊,已區間和為例,若i為奇數,則第i個元素就是源資料的第i個元素,若i為偶數,則第i個元素維護的是 i 2 k 1,i 這段區間的和,k代表i的二進位制末尾0的個數。2 作用 樹狀陣列常用...

樹狀陣列求逆序數

1 什麼是逆序數?在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序數的總數就是這個排列的逆序數。2 用樹狀陣列求逆序數的總數 2.1該背景下樹狀陣列的含義 我們假設乙個陣列a n 當a n 0時表示數字n在序列中沒有出現過,a n 1表...