势能相关难维护的用分块——分块过程维护跨块的:CF1491H / P7446
势能相关难维护的用分块——分块过程维护跨块的:CF1491H / P7446
本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/135093792
https://www.luogu.com.cn/problem/P7446
https://www.luogu.com.cn/problem/CF1491H
看到题,发现只有减,就和势能有关。维护势能,像这种题,树形ds显然不好做,所以可以去考虑进行分块。
考虑分块。每个块记录一个 , 的最深而且不在同一个块的祖先的编号。
考虑动态维护,散块重构。对于大块,如果操作次数超过 ,显然不会变(此时它的父亲已经在上一块了。)
好了,显然要询问了。我们想一想树剖我们是怎么询问lca的。如果两点不在同一条链上,那么就由深的去挑。这题同理,我们直接用块后的去跳到 即可。
如果不在同一块,那就偏后的跳。如果同一个块,但 不相同,则一起跳。如果相同,就是编号打的跳父亲。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhangxixi的博客!


