背景:爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。
題意:給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。
爍爍他每次會跳到乙個節點u,把周圍與他距離不超過d的節點各吸引出w只皮皮鼠。皮皮鼠會被爍爍吸引,所以會一直待在節點上不動。
爍爍很好奇,在當前時刻,節點u有多少個他的好朋友---皮皮鼠。
大意:給一顆n個節點的樹,邊權均為1,初始點權均為0,m次操作:
q x:詢問x的點權。
m x d w:將樹上與節點x距離不超過d的節點的點權均加上w。
第一行兩個正整數:n,m
接下來的n-1行,每行三個正整數u,v,代表u,v之間有一條邊。
接下來的m行,每行給出上述兩種操作中的一種。
對於每個q操作,輸出當前x節點的皮皮鼠數量。
7 61 2
1 41 5
2 32 7
5 6m 1 1 2
q 5m 2 2 3
q 3m 1 2 1
q 2236
和震波哪題很像,也是線段樹+動態點分治
只不過將操作換了,一樣的原理
1 #include2 #include3 #include4 #include5 #include6using
namespace
std;
7#define max 120000
8struct
node
9edge[max<<1
];12
intnum,head[max];
13int
dep[max],fa[max],pos,size[max],minsize,root;
14int
fa[max],son[max],top[max],size;
15int lazy[max*150
];16
int ch[max*150][2],rt[max<<1
],n,m;
17int
ans,val[max];
18bool
vis[max];
19 inline int
gi()
2028
while (ch>='
0'&&ch<='9'
)2933return x*flag;34}
35 inline void add(int u,int
v)36
42void dfs1(int x,int
pa)4356}
57void dfs2(int x,int
tp)5868}
69int lca(int x,int
y)70
76if (dep[x]return
x;77
return
y;78}79
int dis(int x,int
y)80
83void get_root(int x,int
pa)84
95if (size-size[x]>ret) ret=size-size[x];
96if (retx;97}
98void solve(int x,int
pa)99
110}
111void update(int &rt,int l,int r,int l,int r,int
w)112
116int mid=(l+r)>>1
;117
if (l<=mid) update(ch[rt][0
],l,mid,l,r,w);
118if (r>mid) update(ch[rt][1],mid+1
,r,l,r,w);
119}
120int query(int rt,int l,int r,int
x)121
129void change(int u,int k,int
w)130
139}
140void ask(int
u)141
149}
150int
main()
151
159 dfs1(1,0
);160 dfs2(1,1
);161 minsize=size=n;
162 get_root(1,0
);163 solve(root,0
);164 ans=0
;165
for (int i=1;i<=m;i++)
166175
else
176180
}181
return0;
182}
183
BZOJ4372 爍爍的遊戲
背景 爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。題意 給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。爍爍他每次會跳到乙個節點u,把周圍與他距離不超過d的節點各吸引出w只皮皮鼠。皮皮鼠會被爍爍吸引,所以會一直待在節點上不動。爍爍很好奇,在當前時刻,節點u有多少個他的好朋友 皮皮鼠。大意 給一顆n個...
BZOJ 4372 爍爍的遊戲 動態點分治
time limit 30 sec memory limit 512 mb submit 804 solved 288 submit status discuss 背景 爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。題意 給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。爍爍他每次會跳到乙個節點u,把周...
BZOJ4372 爍爍的遊戲 動態點分治
題目描述 給一顆n個節點的樹,邊權均為1,初始點權均為0,m次操作 q x 詢問x的點權。m x d w 將樹上與節點x距離不超過d的節點的點權均加上w。n,m 105,w 104 題目分析 每個點分中心維護乙個樹狀陣列記錄對子樹某個距離的加權,再維護乙個記錄點分樹上的父親由自己這棵子樹貢獻上去的加...