link。
题意:去看题。
首先可以看出任何一个塔都必须建在度为 $1$ 的点上。
证明: 下面用叶子来代替度为 $1$ 的点,度为 $1$ 的根同理。对于一个非叶子节点 $u$ 与一个叶子 $v$,为了保证叶子被覆盖,$v$ 处必然会建塔,如果在 $u$ 再建一个塔,则花费为 $e_u+e_v$,如果将两座塔合并至 $v$,其高度为 $\max(e_u,e_v)$ 显然花费更少并且覆盖范围更大。
我们考虑点对 $(u,v)$ 什么时候会覆盖 $x$,显然 $u,v$ 要么全在 $x$ 为根的树内并且 $\text{lca}(u,v)=x$,要么一个在树内,一个在树外。
发现全在树内的情况很不好考虑,因为不知道 $\text{lca}$,于是我们考虑转化为树外的情况。
根据题意,任何一个节点 $x$,都会存在一个点对 $(u,v)$ 使得 $\min(e_u,e_v)\ge h_x$,那么将这个结论应用到 $h$ 最大的 $x$ 上(下面简称 $h_{max}$),则有 $e_u=e_v=h_{max}$,正确性显然,塔的高度少了覆盖不了,大了又显然不优。
根据这个结论,我们将 $h_{max}$ 提为根,发现覆盖 $h_{max}$ 的 $(u,v)$ 会在根不同的子树内,这样我们在遍历每一个节点 $x$ 时,在树外一定会出现至少一个 $h_{max}$,我们只需要让树内有一个点 $y$ 使得 $e_y\ge h_x$ 便可覆盖。

鲁ICP备2025150228号