題意:
有兩種操作:一種是把乙個元素加入到集合中,一種是刪除集合中第k個元素,求解最後集合裡的元素。
題解:祖傳的樹狀陣列套二分,這種題可遇不可求,比賽時直接秒了,不太會出現這麼裸的資料結構題了,,,
#includeusingnamespace
std;
const
int maxn=1e6+500
;int
n,q;
int lowbit (int
x) int
a[maxn];
intc[maxn];
void update (int x,int
val)
int sum (int
x) int kth (int x,int
k)
return
ans;
}int
main ()
for (int i=1;i<=q;i++)
else
}int f=0
;
for (int i=1;i<=n;i++)
}if (!f)
}
D Multiset(樹狀陣列 二分)
二分 樹狀陣列做法 這個時候我們的 tree 陣列就相當與乙個桶,每個桶裡統計的是值為其下標的個數,通過樹狀陣列的字首和性質,我們可以通過二分輕鬆的鎖定第 k 項的位置,然後進行刪除操作,具體的操作細節看 實現。權值線段樹做法 線段相較而言,常數大一些,維護的基本思路還是更樹狀陣列是一樣的。當我樹狀...
CF1468A LaIS dp,樹狀陣列
給出乙個長度為 n 的序列 a 1,a 2,a n 請找出乙個子串行 b 1,b 2,b k 使其滿足 min b 1,b 2 le min b 2,b 3 le le min b b k 求出 k 的最大值。lais 中由乙個子串行滿足是 is 並且元素距離不超過 2,稱為這個 lais 的核 我...
CF961E Fufuruma(分塊 樹狀陣列)
找出乙個序列裡,ij and a j i的對數 問題可以轉化為對每個i,找到下標區間在i 1到a i 內的j,同時a j i的數的數量,並求和。考慮分塊,然後對每個塊維護乙個樹狀陣列。分塊做的還是不熟練,比賽的時候陣列開小了導致沒過。分塊還是很強,可以做一些線段樹做不了的東西。這題的正解是可持久化線...