P4657 [CEOI2017] Chase 题解

发布时间 2024-01-06 08:18:13作者: Pengzt

P4657

树形 dp。

首先,追逐者遇到的铁球的数量显然不会少于逃亡者遇到的铁球数量。

\(ss_i\) 表示与 \(i\) 相邻的点的权值之和。\(\mathcal{O}(n^2v)\) 的 dp 是很简单的。

\(dp_{i,j,0/1}\) 表示根节点到 \(i\) 的路径上,用了 \(j\) 次磁铁,当前节点选 / 不选的最大值。转移是简单的。

加上 \(\mathcal{O}(n)\) 的枚举根节点,时间复杂度就是 \(\mathcal{O}(n^2v)\) 的了。

参考暴力 dp 的定义方式,对其进行优化。令 \(f_{i,j,0/1}\) 表示从 \(i\) 走到 \(i\) 的子树中,用了 \(j\) 次磁铁,在 \(i\) 处用 / 没用。\(g_{i,j,0/1}\) 则表示 \(i\) 的子树走到 \(i\) 的答案。

则有转移方程:

\(f_{u,i,0}=\max\limits_{v\in \{son_u\}}\{f_{v,i,0},f_{v,i,1}\}\)\(f_{u,i,1} = \max\limits_{v\in \{son_u\}}\{f_{v,i-1,0},f_{v,i-1,1}\}+ss_u-a_{fa}\)

\(g_{u,i,0}=\max\limits_{v\in \{son_u\}}\{g_{v,i,0},g_{v,i,1}\}\)\(g_{u,i,1}=\max\limits_{v\in \{son_u\}}\{g_{v,i-1,0}-a_v,g_{v,i-1,1}-a_v\}+ss_u\)

然后考虑怎么统计答案。

由于直接统计可能会导致路径重复,可以在转移时统计答案。具体地,可以使 \(ans\)\(\max(f_{v,i,0},f_{v,i,1})+\max(g_{u,j,0},g_{u,j,1})\)\(\max(g_{v,i,0},g_{v,i,1})+\max(f_{u,j,0},f_{u,j,1}+a_{fa}-a_v)\)\(\max\),在统计了答案后再转移,就可以使每条路径不重复统计,因为是对儿子 \(v_i\) 之前的所有满足 \(j<i\)\(v_j\) 做统计。但是如果直接枚举 \(i, j\) 的话,是有 \(\mathcal{O}(v^2)\) 的复杂度的,在递推时做一个前缀 \(\max\) 即可。