bzoj 1901 主席樹 樹狀陣列

2021-08-04 20:31:09 字數 789 閱讀 5875

修改+查詢第k小值

單純主席樹修改會打亂所有,所以再套乙個樹狀陣列維護字首和使得修改,查詢都是log

對了,bzoj上不需要讀入組數,蜜汁re。。

#include#include#include#include#includeusing namespace std;

int n,m,sz,t,num_tot,num_cnt,num_l,num_r;

int sum[8000005],lon[8000005],ron[8000005],num[60005];

int a[50005],k[10005],p[10005],q[10005],root[60005];

bool bo[10005];

int l[500],r[500];

int lowbit(int x)

void update(int p,int &rt,int l,int r,int x,int y)

int query(int l,int r,int k)

else

}int main()

num_tot=n;

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

}sort(num+1,num+num_tot+1);

int num_cnt=unique(num+1,num+num_tot+1)-num-1;

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

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

else

}return 0;

}

線段樹,樹狀陣列,主席樹

樹狀陣列 主席樹 包括無修改和可修改。用乙個滿二叉樹 葉子節點可以為空 來維護乙個連續陣列,整個樹的所有葉子節點從左到右表示整個陣列,每個非葉子節點表示其所有葉子的集合所描述的乙個連續子陣列的某一特性 最小值,最大值等 可以在logn的複雜度內實現對任意連續欄位的給定特性的查詢 最小值等 可以在lo...

可修改主席樹 樹狀陣列套主席樹

普通主席樹可以查詢區間k小值,但若直接修改,則複雜度極大,而可修改主席樹通過樹狀陣列的輔助來修改,大大縮小了時間複雜度,缺點是空間複雜度過大.修改的時間複雜度為o logn 2 空間複雜度為o n logn 2 為了減小修改複雜度,可以修改每個區間管理的範圍.傳統主席樹每個點對應的主席樹管理乙個字首...

BZOJ1146 網路管理(主席樹,樹狀陣列)

bzoj許可權題,洛谷題面 樹上帶修改主席樹 貌似和cou nton atre e 那題很相似呀 只需要套上乙個樹狀陣列來維護修改好就好了 但是記住是用df s 來記錄主席樹的標號 一定不要搞錯了 每一次修改只會影響他子數的值 而在d fs序上就是連續的一段 美滋滋的做完了 include incl...