rt,本蒟蒻口胡了一个动态动态规划做法,不知可行不可行,特来请教各位大佬(
考虑朴素 dp,设 fu 表示子树 u 内两个暗房间的最大距离, gu 表示子树 u 内暗房间到点 u 的最大距离。
那么有转移:
fu=maxv∈sonu{fv,gv+gu}(这里 gu 含义类似于树上背包,在转移过程中的前几个儿子。)(复杂度瓶颈)
gu=maxv∈sonu{gv}+1。
然后根据 ddp 的套路,设 fu′,gu′ 表示轻儿子的答案,定义广义矩阵乘法,然后构造从重儿子过来的转移矩阵,跑树剖。
理论来说每一次从链顶更新到另外一条链上时要重新更新所有轻儿子,菊花图可以卡到单次修改 O(n),但是不知道有没有更优的方法去优化这个过程。