AGC008F Black Radius

题意:给出一颗 个节点的树 ,以及关键点集合 。

定义树上邻域 距离不超过的点集。

令 ,求 。即本质不同的关键点邻域个数。

,时限 。


牛逼题。

特殊情况:

先统计所有 的贡献,最后加 。

这样,对于同一个 ,有 。

若 中有若干个 同构,考虑在 最小的 处将其统计。(关键思想)

先观察怎样的 会相同,如下图 :

对于同一个关键点 ,只有若干个 是有贡献的。考虑某个 能贡献的条件。

首先我们要求 ,设 为 到最远点的距离,则有 。

此外,考虑同构。以 为根,考虑另一个关键点点 ,设 。

显然,除了 之外,其余的 。

若 ,则 两者都能覆盖除了 上方的所有部分。

(如图,蓝色点为选择的 ,红色部分为 需要覆盖的部分)

设 为以 为根时 子树外的点到 的最远距离。

则有 即 。排除掉这些 即可。

这也说明了,对于某个 ,能贡献的 是一个前缀。

现在,要对每个关键点 求出 。

不难发现,这里的 可以只考虑相邻节点。则变为

而所有 可以使用 树形 求出。

一般情况

在 中,若 为关键点, 的下界必然是 ,但对于非关键点则是其他数。

考虑对于非关键点 ,使得 有贡献的最小的 。

以 为根,考虑某个关键点 。若能覆盖 所在的整个分支,就能“夺过” 的邻域。

不难发现,当 更大时,上述关系仍然可以成立。

于是,下界即为:覆盖某个含关键点的分支所需的最小 。

也可以使用 树形 求出。

知道了各个 的上下界,容易得到答案。

复杂度 。