AGC008F 题解

发布时间 2023-03-27 17:16:39作者: CDsidi

\(f(u, d)\) 表示以 \(u\) 为中心距离不超过 \(d\) 的点集

考虑对每个点分别统计答案,令当前处理的点 \(u\) 是当前树根

\(mx(u)\)\(u\) 所有子树中,与 \(u\) 最远距离最
大值,

\(se(u)\)\(u\) 所有子树中,与 \(u\) 最远距离的次大值,

我们只在 \(d\) 最小的时候计数,而且不计算全集
先考虑所有点都是关键点的情况
翻译一下两个条件,是

  1. \(d < mx(u)\)
  2. 不存在 \(u\) 的儿子 \(v\),使得 \(f(v, d - 1) = f(u, d)\)

为什么条件 \(2\) 可以满足 \(d\) 最小的要求?

首先考虑简单情况,如果 对儿子 \(v\), \(f(v, d - 1) \neq f(u, d)\),则子树外没有填满,或者子树内没有填满,所以有 $ f(v, d - 2) \neq f(u, d)$

然后我们考虑其它结点 \(w\),在 \(u\) 的儿子 \(v\) 的子树内

考虑使用反证法, 反正它是对的

假设 \(f(v, d - 1) \neq f(u, d)\) 但是 \(f(u, d) = f(w, k) (k < d)\)

由于在 \(v\) 子树内延伸方向不一样,\(f(u, d) = f(w, k)\) 一定能填满 \(v\) 子树,

由于\(f(v, d - 1)\neq f(u, d)\) 所以 \(v\) 子树外没有填满,所以 \(f(u, d) \neq f(w, k)\)

现在处理条件 \(2\)

可以发现 \(f(v, d - 1) = f(u, d)\) 只在 \(f(v, d - 1)\) 填满了 \(v\) 之外所有子树的时候发生

同时我们要求了条件 \(1\),所以 \(v\) 只能具有离 \(x\) 最远距离的儿子

\(v\) 子树外,一个点被 \(f(u, d )\) 访问到的充要条件是被 $f(v, d - 2) $ 访问到

所以 \(d - 2 \leq se(u)\)

对一个关键点, $d \leq se(u) + 2, d \leq mx(u) - 1 $

我们再考虑一个非关键点 \(x\) 的贡献,

观察得到 \(f(x, d)\) 是一个 关键点 \(v\) 的覆盖,并且 \(d\) 最小,

则有 \(u\) 完全覆盖 \(v\) 所处的子树中

于是我们记 \(k\) 为到此点的关键点子树的最大深度的最小值(若此点为关键点则 \(k = 0\) )。

\(d \geq k\)