题解:AT_abc290_f [ABC290F] Maximum Diameter

· · 题解

神仙题目。

我们只需要考虑 \sum a_i = 2n - 2 并且 a_i > 0 的序列即可。

先考虑最大化树的直径,假如说 a 中有 k 个 1,即最后的树上一共有 k 个儿子节点,那么我们只需要把剩下的 n - k 个点排成一条链,然后再向两端加上两个叶子节点,剩余的叶子节点补到链上度数不够的节点。这样子直径的长度就是 n - k + 1。然后我们考虑怎么计数。枚举 k,那么叶子节点的选择方案数显然为 \dbinom nk。如此一来剩下的节点的度数和就是 2n - 2 - k,剩下的节点数就是 n - k。那么就相当于把 2n - 2 - k 个球放到 n - k 个盒子里面,并且每一个盒子至少有 1 个球。那么其数量就为:

\dbinom {(2n - 2 - k) - 2(n - k) + (n - k) - 1}{(2n - 2 - k) - 2(n - k)} = \dbinom {n - 3}{k - 2}

那么在乘上链的长度,最终的答案就是 \sum^n_{i = 1}\dbinom nk \dbinom {n - 3}{k - 2} (n - k + 1),但是这个东西求一次要 O(n) 的复杂度,难以接受。

在继续化简的前面,我们需要了解两个式子:

上面两个都很好证明,在这里就不给证明了。然后就可以对于上面的式子进行化简了。

\begin{array}{l} \sum^n_{k = 1} \dbinom nk \dbinom {n-2}{k-2} (n - k + 1)\\= -\sum^n_{k = 1} \dbinom nk \dbinom {n-2}{k-2} (k - 2 + 1 - n)\\= -\sum^n_{k = 1} \dbinom nk \dbinom {n-2}{k-2} (k - 2) + (n - 1) \sum^n_{k = 1} \dbinom nk \dbinom {n-2}{k-2}\\= (n - 1) \sum^n_{k = 1} \dbinom nk \dbinom {n-2}{k-2} -(n - 3) \sum^n_{k = 1} \dbinom nk \dbinom {n-4}{k-3}\\= (n - 1) \sum^n_{k = 1} \dbinom nk \dbinom {n-3}{n - k - 1} -(n - 3) \sum^n_{k = 1} \dbinom nk \dbinom {n-4}{n-k-1}\\= (n - 1) \dbinom {2n-3}{n-1} - (n-3)\dbinom {2n-4}{n-3} \end{array}

然后这样子就可以 O(1) 求出答案了。