CF1354D MultiSet(樹狀陣列 二分)

2022-06-18 02:42:09 字數 605 閱讀 9059

題意:

有兩種操作:一種是把乙個元素加入到集合中,一種是刪除集合中第k個元素,求解最後集合裡的元素。

題解:祖傳的樹狀陣列套二分,這種題可遇不可求,比賽時直接秒了,不太會出現這麼裸的資料結構題了,,,

#includeusing

namespace

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的數的數量,並求和。考慮分塊,然後對每個塊維護乙個樹狀陣列。分塊做的還是不熟練,比賽的時候陣列開小了導致沒過。分塊還是很強,可以做一些線段樹做不了的東西。這題的正解是可持久化線...