AGC008F Black Radius

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

定义树上邻域

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

,时限


牛逼题。

特殊情况:

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

这样,对于同一个 ,有

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

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

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

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

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

显然,除了 之外,其余的

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

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

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

则有 。排除掉这些 即可。

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

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

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

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

一般情况

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

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

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

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

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

也可以使用 树形 求出。

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

复杂度