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