BZOJ 3720 Gty的妹子樹 塊狀樹

2021-06-27 06:00:42 字數 785 閱讀 6988

題目大意:維護一棵樹,每個點有乙個權值,提供下列操作:

1.詢問某棵子樹中有多少個節點的權值大於x

2.修改某個節點的權值

3.增加乙個葉子節點

傳說中的樹分塊

首先dfs,對於每個節點,如果這個節點的父親節點所在塊未滿,就塞進父節點所在塊中,否則自成一塊,然後與父節點所在的塊連邊

新增節點同理

然後就按照分塊直接搞吧0.0 細節實在是太多了 所以寫掛的地方看看本蒟蒻的**就好了0.0

#include #include #include #include #include #define m 30300

using namespace std;

struct block

void modify(int x,int y)

int query(int x)

}blocks[10100];

struct abcdtable[m<<2];

int head[m<<1],block_head[m],tot;

int n,m,block,ans,cnt;

int a[m<<1],fa[m<<1],belong[m<<1];

void add(int _head,int x,int y)

void dfs(int x)

void block_dfs(int x,int y)

void dfs(int x,int y)

int main()

} return 0;

}

bzoj3720 Gty的妹子樹

我們可以樹上分塊,詳見我部落格中雜文下的根號演算法題庫 然後每個塊維護降序,對於整一塊在子樹內的就可以二分,其餘部分暴力。include include include include define fo i,a,b for i a i b i using namespace std const i...

BZOJ3720 Gty的妹子樹

如果沒有插入操作,那麼直接對dfs序建立線段樹套平衡樹即可,有插入操作的話,將外層的線段樹換成重量平衡樹即可。一開始寫替罪羊樹套權值線段樹無限mle 所以只好寫替罪羊樹套treap include include includeusing namespace std typedef unsigned...

BZOJ3720 Gty的妹子樹

題目 題解 傳說中的塊狀樹。和鏈剖思想差不多,能塞到父親塊裡的就塞,否則自己新開一塊。只是比較糾結樹分塊究竟用什麼?如果是樹上莫隊的話好像不能這麼分?被菊花卡死?然後我們就每個塊暴力維護資訊。剛開始以為set就行了,到了寫查詢的時候發現尼瑪set是不能維護名次的t t 還是老老實實寫線性表吧。塊開s...