1 条题解
-
1
这题允许离线!
我们把每个第二类修改操作的界限定一下,然后对下标轴扫描线。显然先做完所有修改再询问答案不变。
对于不存在的点,其存在也无妨,只不过不能生长了而已。
那么每次操作的实质就是把一段区间内所有点的父亲都给改变。
考虑对这个区间改父亲的操作进行根号分治,如果更新的区间长度大于 那么就懒惰改父亲,否则在 LCT 上暴力改父亲。
这样,我们每次 LCT 的总操作次数不会超过 次,该部分复杂度为 的。
对于查询,我们发现最多跳 个懒惰加的父亲到达根节点,该部分的复杂度即为 的。
这样,我们稍微平衡一下,取 ,就得到单次复杂度为 。
总复杂度 。
这个做法可能有点暴力,使用改点权的技巧可以做到 。不过太难写就算了。
参考代码。
- 1
信息
- ID
- 4573
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 6
- 已通过
- 3
- 上传者