3720 Gty的妹子樹 塊狀樹

2021-07-11 02:59:51 字數 1096 閱讀 3295

將樹分塊,保證每塊內都聯通,然後保證每塊內都有序,就可以支援查詢操作了。

加入節點的時候,如果達到塊的大小就重建乙個塊,否則加入當前塊,不要忘記加入後對塊排序!

#include

#include

#include

#include

using

namespace

std;

const

int n=60005;

int head[n],list[n<<1],next[n<<1];

int head[n],list[n<<1],next[n<<1];

int a[n],fa[n],belong[n];

int n,m,cnt,ans,cnt,tot,b;

struct node

inline

void change(int x,int y)

inline

int query(int x)

};node block[10005];

inline

int read()

while (c>='0'&&c<='9')

return a*f;

}inline

void insert(int x,int y)

inline

void insert(int x,int y)

void dfs(int x)

void dfs1(int x,int y)

void query(int x,int y)

}int main()

for (int i=1;i<=n;i++) a[i]=read();

dfs(1);

for (int i=0;i<=tot;i++)

sort(block[i].a+1,block[i].a+block[i].size+1);

m=read();

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

else

if (opt==1)

else}}

return

0;}

BZOJ 3720 Gty的妹子樹 塊狀樹

題目大意 維護一棵樹,每個點有乙個權值,提供下列操作 1.詢問某棵子樹中有多少個節點的權值大於x 2.修改某個節點的權值 3.增加乙個葉子節點 傳說中的樹分塊 首先dfs,對於每個節點,如果這個節點的父親節點所在塊未滿,就塞進父節點所在塊中,否則自成一塊,然後與父節點所在的塊連邊 新增節點同理 然後...

bzoj3720 GTY的妹子樹 塊狀樹模板

圓方樹上塊狀果,點分樹下你和我,虛樹下面做遊戲,仙人掌上歡樂多 這道題題目很長 大概說的是 要求你寫出乙個資料結構,維護一顆帶點權的樹,茲瓷 1.單點修改點權 2.查詢子樹內點權大於x的點的個數 3.新給出乙個點,並將這個點與已有點做link 似乎以前學過的任何資料結構都不能做這麼奇怪的事情呢 我們...

bzoj3720 Gty的妹子樹

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