专栏文章
长链剖分小技巧
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miozlshz
- 此快照首次捕获于
- 2025/12/03 03:44 3 个月前
- 此快照最后确认于
- 2025/12/03 03:44 3 个月前
给定一棵树,有 次操作,每次操作形如 (保证 不超过 子树内最大深度),你需要对 子树外,距离 恰好为 的点 执行 ,求最终的数组 。
首先对树进行长链剖分。然后考虑直接对树进行 dfs,维护一个数组 表示已经处理完了子树外的所有操作,此时子树内深度为 的点答案是 。
考虑向下递归。首先往重儿子递归是简单的,因为操作的性质,所以每个子树内深度为 的轻儿子只有 种本质不同的操作,暴力处理对 的影响即可。
而往轻儿子递归的时候,其余轻儿子对他的贡献也是好算的,只需要记录每个深度中所有轻儿子操作的最小值和次小值。
然后对于重儿子对一个深度为 的轻儿子的贡献,显然也只有 种贡献,只需要把它找到即可。所以每个点额外维护一个 表示 子树内的所有操作对子树外的影响延长出去 的最小答案,也就是对于所有 , 中 的最小值。 的上界显然也是 子树深度,所以这个也是可以长链剖分维护的。
上面的 处理了子树外操作的贡献,而 也能处理对子树内操作的贡献。复杂度是 的。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...