哨兵 题解

我们可以发现这个题和树上差分差不多,只是我们在计算前缀和和差分的时候需要改一下更新方式。

f[u][time] 去更新 f[father][time+1]

然后我们发现一个小问题,这条链的另外一半的时间是倒过来的,于是我们开两个前缀和数组一个存往前更新一个存往后更新就可以了。

那么我们需要注意的是,在差分的最后一步:得到lca时的最后的差分不能像原来这样写

之前是可以这样写的,因为xy的父亲的父亲是一样的

但是,因为这次左边的链和右边的链是分开更新的并且更新的方式不同,这样会导致前缀和错误。

posted @ 2021-07-12 21:04  lei_yu  阅读(37)  评论(0编辑  收藏  举报