HDU 3743 樹狀陣列,離散化

2021-07-09 12:38:45 字數 684 閱讀 4476

其實,我也知道這道題是求逆序數來做的,

但是問題來了,怎麼求逆序數,常規的解法肯定是不行的,因為資料量很大,

那麼想到能用線段樹來做,是可以的,不過我還沒敲過,既然在看樹狀陣列就用這個做。

又因為資料可以達到一百萬,並且資料又用不到,所以可以對資料進行離散化

#include #include #include using namespace std;

#define size 1000001

struct node

list[size];

int c[size];

int num[size];

int cmp(node a,node b)

inline int lowbite(int x)

void add(int k,int n)

}int sum(int k)

return s;

}int main()

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

for(i=1;i<=n;i++)//實現離散化,因為之前已經排過序,所以直接賦值i就算離散化了

ans = 0;

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

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

} return 0;

}

hdu 3743 樹狀陣列

思路 我們只需堅守乙個原則,本來就在左邊的堅決不把它換到右邊。也就是相鄰的兩個數,左邊小,右邊大,那麼就不調換。這樣對每個數,只要統計左邊比它大的數的個數。可以從後面開始用樹狀陣列統計比它小的數的個數是一樣的。include include include include define maxn 1...

hdu 5877(樹狀陣列 離散化)

題意 查詢節點與它的父親節點相乘小於k的種類數。思路 用乙個樹狀陣列維護,查詢的話就是它的父親節點小於k a i 的個數。當跑完這個分支之後,要對他進行清除操作。ps 數比較大,需要離散化。include include include include include include include...

離散化 樹狀陣列

題目描述 erwin最近對一種叫 thair 的東西巨感興趣。在含有n個整數的序列a1,a2 an中,三個數被稱作 thair 當且僅當i求乙個序列中 thair 的個數。輸入格式 開始乙個正整數n,以後n個數a1 an。輸出格式 thair 的個數 思路 列舉中間的數字,求排在它前面,小於它的有幾...