- csp-s模拟赛15
B 我的思路
- @ 2026-10-24 19:29:24
hhh A 题读错题了,完全错解还过了 9 个样例。。。
B
一个都不删的情况:最优肯定是最长链放在最后不回溯
要删点: 注意到如果一个关键节被删,那它上面有一段的路不用走,具体的,就是止步于分支节点或者另一个关键点,而这个分支节点恰好是被删节点和其他关键节点最近公共祖先(下简称父亲)。
所以对关键点新建一棵树 ,边权 就是关键点 u 到父亲的距离。利用递归栈的性质可以实现。
记总长 就是完全走完的路线长度(所有关键点都不删,每走完一个关键点就回到根)。
如果删了一个 的叶子 :
那 到它父亲这条路不用走了, 减去 。然后依旧把最长链留到最后不回溯,根据 的定义, 把最长链多算了一次,要减去最长链的长度
另外最长链只有两种可能:原树最长链和原树非严格次长链
当然并不需要真的建这颗树,我们需要信息的有且仅有这个节点到父亲的边权是多少,直接维护 。
综上所述
答案是
0 条评论
目前还没有评论...