当前位置: 代码迷 >> 综合 >> Codeforces 633 F The Chocolate Spree(树形dp,两条不相交链节点权值和最大)
  详细解决方案

Codeforces 633 F The Chocolate Spree(树形dp,两条不相交链节点权值和最大)

热度:28   发布时间:2023-12-08 10:20:52.0

题目链接:
Codeforces 633 F The Chocolate Spree
题意:
给一个 n 个节点的树和 n?1 条边,每个点有一个权值,从树中选择两条不相交的链(无公共节点)使得两条链上节点权值和最大?
数据范围: n105,value[i]109
分析:
参考博客:逍遥丶綦
dfs 处理出每个节点向其子树最多可以得到的链的最大权值和 down[v] (必须由 v 节点向下)和在子树中最长链的权值 best[v] (可以由一棵子树从下往上经过 v 节点然后转向另一棵子树,也可以是某棵子树的内部的最长链)。
然后借助队列遍历每个 u 和其儿子 v “截断”这条边(以这条边为分界线),求的两棵树的内部最长链。这时就相当于把 v 节点和 u 以及 u 的其余儿子节点都分开了。我们先求 u u