動態區間第K大 樹狀陣列 主席樹

2021-08-08 15:57:07 字數 894 閱讀 5291

很早以前做靜態第k大的時候聽到要用樹套樹就過於害怕逃走了,現在用分塊暴力過了之後又想用樹套樹a一遍,於是就寫了一下

starkmal的線段樹+splay常數卡出翔惹

#prag\

ma gcc optimize("o3")

#include #include #include #include #include #include #define mid (l+r>>1)

#define mid_1 ((l+r>>1)+1)

#define r(***) scanf("%d",&***)

#define dr(***,yyy) scanf("%d%d",&***,&yyy)

#define tr(***,yyy,zzz) scanf("%d%d%d",&***,&yyy,&zzz)

#define p(***) printf("%d\n",***)

#define lowbit(i) (i&-i)

using namespace std;

const int n = 50005;

int a[n], n, m, tot, max, _0, _1, _2;

char cmd;

int ver[n], c[26000010], v, d;

int xx[n], yy[n], ls[26000010], rs[26000010];

void update( int &p, int l, int r )

void modify()

int query()

else

} return l;

}int main()

while( m -- )

return 0;

}

主席樹 動態區間第k小

模板題在這裡洛谷2617。閱讀本文需要有主席樹的基礎,也就是通過區間kth的模板題。靜態整體kth sort一下找第k小,時間複雜度 o nlogn 動態整體kth 權值線段樹維護一下,時間複雜度 o nlogn 靜態區間kth 主席樹維護,時間複雜度 o nlogn 動態區間kth 就是本次的標題...

帶修改的區間第k小 樹狀陣列套主席樹

題目鏈結 對乙個序列進行兩種操作 對於不待修改的區間第k kk小,我們可以用主席樹完成。我們來看看只用主席樹如何完成帶修改的區間第k kk小。對於每次修改,我們都需要把當前位置及以後的主席樹都進行修改。因此每次修改的時間複雜度為o n log n o nlog n o nlog n 空間增加o n ...

區間第k大(主席樹)

學了一下主席樹模板題,當初看了網上的主席樹講解都沒有看懂,後面看了嗶哩嗶哩的uestc的主席樹,終於看懂了思想。每次更新的複雜度都為logn。每次更新的話就是對要更新的點路徑上的點重新更加乙個,然後進行對沒有影響的那些進行連邊。然後用乙個root記錄每乙個線段樹的根節點下標。include incl...