poj 2299 樹狀陣列

2021-06-17 19:13:25 字數 567 閱讀 4937

題目大意:本題要用到樹狀陣列的離散化處理,因為資料太大(1-999999999),但還是wa了兩次,c[i]的範圍計算錯誤,要用到long long .

從後向前處理,每次處理乙個數,求比這個數小的個數。

//poj 2299 樹狀陣列

#include#include#include#include#includeusing namespace std;

#define m 500010

int a[m];

long long c[m];

int m;

struct node

s[m];

bool cmp(node x,node y)

return t;

}int main()

sort(s+1,s+n+1,cmp);

int k=0;

a[s[1].pos]=1;

m=1;

for(i=2;i<=n;i++)

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

}return 0;

}

POJ 2299(樹狀陣列,離散化)

題意 求逆序數 題解 可以將數字插入樹狀陣列,每次統計比單前數字小的個數,我們將每個數字的權值設定為1,那麼只要求在他前面數字的和就知道了,對應的逆序數格個數是i sum a i 這裡使用樹狀 陣列維護區間和 這一題由於數字範圍過大,記憶體無法承受如此大的空間,我們可以看到n最多才5e5,所以最多有...

poj 2299 樹狀陣列 離散化

樹狀陣列求逆序數 離散化 求逆序數時,加入當前數字,然後統計大於當前數字的數字個數,題目資料很大,需先將其離散化。include include include define n 500005 define lowbit x x x using namespace std int c n a n s...

POJ 2299 樹狀陣列,離散化

題目大意 求一組數的逆序數有多少個 題目解析 用樹狀陣列做,向下更新,向上求和,因為資料範圍太大,但是每個數都不一樣所以先離散化一下 ac include include include include includeusing namespace std typedef long long ll ...