HDU 4417 水題 樹狀陣列

2021-07-24 10:14:32 字數 640 閱讀 1282

題目大意:給n個數字,m個詢問

每次詢問[l,r]區間的數字,比k小的數字有多少個。 下標從0~n-1

直接離線後樹狀陣列,聽說劃分樹也能過

略微更新的我的破爛離散化小板子~

#include using namespace std;

#define pr(x) cout<< #x << " = " vectormp[maxn];

void init()

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

lisan.ins(0x7fffffff);

lisan.ins(-2000000000);

lisan.doit();

n += 2;//因為多新增乙個數字,所以可能有n+1個不同的數字,[1,n+1]區間

}int ll[maxn],rr[maxn],kk[maxn];

//g[i][j] [1..i]區間,比j小的數字的數量

void doit()

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

for (int i = 1; i <= m; ++ i) }

int main()

return 0;

}

HDU4417(主席樹計數)

解題思路 如果說用排序,那麼複雜度就是o mnlogn 會超時。用主席樹的空間複雜度是o nlogn 時間複雜度是o max nlogn,mlogn 這道題稍微修改一下query函式即可。include include include include define n 100009 using na...

hdu 2838 樹狀陣列水題

提議是給你乙個序列 讓你調整把它變成 從小到大排列的有序序列 沒調動兩個為兩權值之和 問最小的權值和是多少 給個數列 1 4 2 3 5 對每乙個位置數 需要交換的比為前面比它大的數 或後面比它小的數 包含了最小值在裡面了 比如pi前面有5個數比它大 則就需要把這5個數和pi交換 交換的權值就是這5...

hdu 1594 樹狀陣列 水題

思路 乙個座標的level和它的y座標是無關的,因為x和y都是公升序leve給出的,乙個座標的level只和前面所有的x有關,那麼可以抽象這麼乙個a陣列 實際上是不存在的,只是抽象出來 每輸入乙個x,就對a x 1 因為有0 當前a 1 a x 1 的和就是該座標的level,那麼這個a陣列就可以用...