不恰当的思路
首先拿到题,就想到 图染色——蓝桥杯 · 分考场 ,dfs 从第一个节点遍历到第n个节点,对于每一个节点试着去装进一个room(一个room内的所有人都没有直接关系),最后接收 room 内所有节点的权值和。事实证明,不仅空间耗费大,时间复杂度也很大(因为要便利每一种对于每一个节点装与不装的组合),拿下10分。
AC思路
又联想到另一道题 蓝桥杯 · 对局匹配 ,这个思路其实是对的,本题就是这题从线性转换为树型。
线性的 dp 动态方程就是 dp[x] = max(dp[x -> next], dp[x ->pre ->next] + w[x])。从起点走到当前结点的最大总权就是(该结点的子结点最大总权,和该结点的子子结点最大总权加上当前结点权值)的最大值&#