【讲题】Galaxy OJ 树形DP专题
树形DP专题
【题目传送门】
实际上我开始写题解的时候也没有全部A(我好弱)
T1 没有上司的舞会
首先要设计 \(DP\) 状态:
设 \(dp_{u,\ 0}\) 为当节点 \(u\) 不去时,以 \(u\) 为根的子树产生的最大欢乐值;
设 \(dp_{u,\ 1}\) 为当节点 \(u\) 去时,以 \(u\) 为根的子树产生的最大欢乐值。
我们假设现在 \(dfs\) 到节点 \(u\) ,节点 \(v\) 是 \(u\) 的一个子节点,现在我们需要分类讨论:
若 \(u\) 去,则 \(v\) 不可以去,即 \(dp_{u,\ 1}=\sum\ dp_{v,\ 0}\);
若 \(u\) 不去,则 \(v\) 可去可不去,即 \(dp_{u,\ 0}=\sum\ max(dp_{v,\ 0},dp_{v,\ 1})\)。
综上所述,我们得到了正解。
T2 寻宝
这是一道树上背包的题
我们设 \(dp_{u,\ i}\) 为在以 \(u\) 为根的子树上探险 \(i\) 天,所能获得的最大价值。
首先 \(dfs\) 遍历整一棵树,对于节点 \(u\) 和它的子节点 \(v\),为了求出 \(dp_{u,i}\) 可以这样做:
先在 \([1,\ m]\) 枚举 \(i\),接着在 \([i,\ i-2w](w为边u \rightarrow v的边权)(没错,倒着枚举)\) 范围内枚举在以 \(v\) 为根的子树中的探险时间 \(j\) 。
所以 \(dp_{u,\ i}\) 获得了值为 \(dp_{v,\ j}\) 的增益。然而 \(i\) 天没有全部用完,所以 \(dp_{u,\ i}\) 还要加上 \(dp_{u,\ i-2w-j}\)。
综上所述,状态转移方程为 \(dp_{u,i}=max\{dp_{v,j}+dp_{u,i-2w-j}\}\)
T3 完美服务器
这道题是 \(T1\) 的升级版。
我们发现这一道题的每一个节点都与它周围的节点有关系,于是我们仿照 \(T1\) 写出了状态转移方程:
设 \(dp_{u,\ 0}\) 为当节点 \(u\) 为服务器时,以 \(u\) 为根的子树最少设置的服务器数量;
设 \(dp_{u,\ 1}\) 为当节点 \(u\) 有一个子节点为服务器时,~
设 \(dp_{u,\ 2}\) 为当节点 \(u\) 的父亲节点为服务器时,~
接着是愉快的分类讨论推方程,我们的目标是求出 \(dp_{i,\ sta}\) :
若 \(sta=0\) ,就表示 \(u\) 为服务器,原式的初始值为 \(1\) 。因为 \(u\) 为服务器,那么 \(v\) 的状态只可以是服务器(0)或父亲为服务器(2),即 \(dp_{u,\ 0}=1+\sum max\{dp_{v,\ 0},\ dp_{v,\ 2}\}\);
若 \(sta=1\) ,就表示 \(u\) 的儿子中有且仅有一个服务器。我们将状态转化一下可以得到:\(dp_{i,\ 0}\) 表示 \(i\) 是服务器,父亲和儿子都不是; \(dp_{i,\ 2}\) 表示 \(i\) 的父亲是服务器,儿子节点都不是。现在我们需要枚举 \(v\) 使得 \(u\) 的儿子中仅仅有 \(v\) 是服务器时的答案,所 以 \(dp_{i,\ 1}=min\{dp_{u,\ 2}-dp_{v,\ 1}+dp_{v,\ 0}\}\);
若 \(sta=2\) ,就表示 \(u\) 的父亲是服务器,但儿子都不是。所以方程为 \(dp_{u,i}=\sum\ dp_{v,\ 1}\)。
综上所述,我写得有点累……
T4 “访问”术馆
这一道题和 \(T2\) 是同样的做法,需要注意的是因为题目要求的是在警察赶到之前,所以答案不是 \(dp_{0,\ s}\) , 而是 \(dp_{0,\ s-1}\)。
【无代码】
T5 聚会的快乐
这是一个披着 \(T5\) 幌子的假 \(T1\) 。(为什么我一直是90分?!)
【无代码】
T6 世界杯
T7 有线电视网
这道题也是树上背包,与T2有异曲同工之妙。
设 \(dp_{u,\ i}\) 表示在以 \(u\) 为根的子树中,选 \(i\) 个用户获得的最大收益。
假设节点 \(v\) 是 \(u\) 的一个儿子,我们在 \(u\) 的子树中选 \(i\) 名用户,在 \(v\) 的子树中选 \(j\) 名用户,可以得到: \(dp_{u,\ i}=max\{dp_{u,\ i-j}+dp_{v,\ j}\}\) 。对于每个叶子节点 \(x\) ,都有 \(dp_{x,\ 1}=w_i\ (w_i为用户支付的钱数)\) 。
\(dfs\) 之后,找到一个最大的 \(i\) 使得 \(dp_{1,\ i} \geq 0\) , \(i\) 即为答案。