bb

首先,一个图是好树的充分必要条件是 \(\displaystyle \sum_{i=1}^{N} X_i = 2N-2\)

证明:对于有 \(N\) 个顶点的树来说,它恰好包含 \(N-1\) 条边,并且其中一条边对总度数的贡献为 \(2\),所以必要性是显然的。另外,如下所述,我们可以具体构造一个"直径最大的好树",因此充分性也得到证明。

假设存在一个好树,我们考虑它的最大直径。直径中的顶点除了两个端点外,度数都至少为 \(2\),所以假设度数至少为 \(2\) 的顶点的个数为 \(K\),那么 \(K+1\) 是解的上界。反过来,存在直径为 \(K+1\) 的好树。具体构造如下:

  • 将满足 \(X_i\geq 2\) 的顶点 \(i\) 按适当的顺序排列在一列中,并在相邻顶点之间添加边,形成一条路径。
  • 重复以下步骤直到不满足 \(X_i\geq 2\) 的顶点出现:从满足 \(X_i\geq 2\) 的顶点中选择一个顶点 \(i\),如果它的度数不满足 \(X_i\),则选择一个度数为 \(1\) 且尚未添加边的顶点 \(j\),然后在顶点 \(i\)\(j\) 之间添加一条边(根据 \(\displaystyle \sum_{i=1}^{N} X_i = 2N-2\),这个操作会恰好用完度数为 \(1\) 的顶点 \(j\))。

通过上述构造方式,我们可以构造出直径为 \(K+1\) 的好树(请参考提示中的图示)。因此,如果存在好树,令 \(S\) 为满足条件的 \(X\) 的集合,则:

\(\begin{aligned} \sum_{X\in S} f(X) &= \sum_{X\in S} ((X\ \text{中大于等于 2 的整数的个数}) +1)\\ &= |S| + \sum_{X\in S} (X\ \text{中大于等于 2 的整数的个数})\\ &= |S| + \sum_{i=1}^{N} (\text{满足 } X_i\geq 2 \text{ 的 } X \in S \text{ 的个数})\\ &= |S| + (\text{满足 } X_1\geq 2 \text{ 的 } X \in S \text{ 的个数})\times N\\ &=(\text{满足 }\sum_{i=1}^{N} X_i = 2N-2 \text{ 的正整数序列 } X \text{ 的个数})+(\text{满足 }\sum_{i=1}^{N} X_i = 2N-2\land X_1\geq 2 \text{ 的正整数序列 } X \text{ 的个数})\times N\\ &=(\text{满足 }\sum_{i=1}^{N} X_i = N-2 \text{ 的非负整数序列 } X \text{ 的个数})+(\text{满足 }\sum_{i=1}^{N} X_i = N-3(集体-1,然后对第一个再-1) \text{ 的非负整数序列 } X \text{ 的个数})\times N\\ &= \binom{(N-2)+(N-1)}{N-1}+\binom{(N-3)+(N-1)}{N-1}\times N\\ &= \binom{2N-3}{N-1}+\binom{2N-4}{N-1}\times N \end{aligned}\)

因此,通过预计算阶乘和其逆元的值,我们可以在每个测试用例中以 \(O(1)\) 的时间复杂度解决这个问题。

posted @ 2023-09-06 18:13  wscqwq  阅读(5)  评论(0编辑  收藏  举报