poj 2299 樹狀陣列求逆序數 離散化

2021-06-23 04:55:17 字數 565 閱讀 1846

最初做離散化的時候沒太確定但是寫完發現對的---因為字尾陣列學的時候,,這種思維習慣了吧

1、初始化as[i]=i;對as陣列按照num的大小間接排序

2、bs[as[i]]=i;現在bs陣列就是num陣列的離散化後的結果

3、注意,樹狀陣列中lowbit(i)  i是不可以為0的,0&(-0)=0,死迴圈...

#include #include #include #include #include #include #include #include #include using namespace std;

#define ls(rt) rt*2

#define rs(rt) rt*2+1

#define ll long long

#define ull unsigned long long

#define rep(i,s,e) for(int i=s;i0;s+=c[i],i-=lowbit(i));

return s;

}bool cmp(const int a,const int b)

{ return num[a]

樹狀陣列求逆序數 poj 2299

突然想起樹狀陣列了,因為突然想起之前從來沒a掉的那個樹狀陣列求逆序數的題,大概意思就是求乙個陣列用氣泡排序排序後的交換次數,因為資料量為5萬,所以o n n 的冒泡模擬肯定是超時的,所以題目的解法可以有兩種,一種是歸併排序,歸併排序的乙個應用正是求逆序數,而另乙個就是樹狀陣列了。思想就是通過將數乙個...

poj 2299 求逆序數

在只允許相鄰兩個元素交換的條件下,得到有序序列的交換次數 乙個亂序序列的 逆序數 求其逆序數 從左到右找到每乙個ai的 乙個陣列x x j 1表示此時有j這個數 x j 0表示此時還沒有j這個數 一開始x全部賦值為0 對於每乙個a i 求出 x k 1 k這裡用的樹狀陣列實現的這個過程 輔助陣列c ...

poj 2299 樹狀陣列離散化逆序數 水

include include include include include include include include include include include include include include include define iinf 2000000000 define ...