题目链接
方法:树链剖分 边权型 单点更新 区间RMQ
题目分析
题目大意
给出n-1
条边的权,两种操作,一种更新一条边的权值,另一种查询给定两个点之间的RMQ
解析
今天对这题豁然开朗。
对于一条边i
来讲,端点分别为a[i], b[i]
,当b[i]
的深度较大时,w[b[i]]
记录的为当前边。在find()
函数中最后如果找到一个公共的重链,得到两个点u
和v
,我们令dep[u] < dep[v]
,则求这两个点之间的RMQ值,我们需要找的实际上是w[son[u]]~w[v]
这段距离w[son[u]]
表示是u-son[u]
这条边,需要注意一下
代码
1 |
|