HDU 4911 樹狀陣列求逆序數 離散化

2021-09-05 01:39:51 字數 695 閱讀 8260

題意:最多可以交換k次,就最小逆序對數。

思路:逆序數定理,當逆序對數大於0時,若ai要知道樹狀陣列的長度是資料範圍,由於資料比較大,所以要離散化。注意開long long。

#include using namespace std;

#define mem(a,b) memset(a,b,sizeof(a))

#define pii pair#define ll long long

const int maxn = 1e5+5;

int n, k;

bool cmp(pii a, pii b)

struct bit

void add(int p, int x)

ll sum(int p)

}bit;

int main()

); }

sort(v.begin(),v.end(),cmp);

int c = 1; mp[v[0].second] = c;

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

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

printf("%lld\n",max(cnt-k,0ll));

}}

樹狀陣列求逆序數

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

樹狀陣列求逆序數

chikachika說希望和我一起做學園偶像的時候,我真的很開心。watanabeyouwatanabeyou 曜是千歌的青梅竹馬,但是aqoursaqours成立以後,千歌似乎總是與梨子在一起,而把曜冷落了。為了讓千歌知曉自己的心意,曜醬決定做一件大事!她決定把乙個給定的11 nn的排列 1 ai...

樹狀陣列 求逆序數

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