写水题玩(
首先一个 n 点无向完全图的生成树个数,等价于 n 点无根树的个数。
而根据 Prufer 序列,这样的树有 nn−2 棵。
显然边是均匀分布的,故每条边的出现次数就是生成树总边数除以无向完全图的边数,即 \frac{(n-1)n^{n-2}}{\binom n2}=2n^{n-3}。
所以每条边出现的概率为 \frac{2n^{n-3}}{n^{n-2}}=\frac2n。
那么实际上只要算这张图上所有边权之和,乘上 \frac2n 就是答案。
然后也不知道怎么的就考虑设边权和为 f_n,寻找其递推式。
有
\begin{aligned}
f_n-f_{n-1} &= \sum\limits_{i=1}^{n-1}\sum\limits_{j=i+1}^n(i+j)^k-\sum\limits_{i=1}^{n-2}\sum\limits_{j=i+1}^{n-1}(i+j)^k \\
&= (2n-1)^k + \sum\limits_{i=1}^{n-2}\sum\limits_{j=i+1}^n(i+j)^k - \sum\limits_{i=1}^{n-2}\sum\limits_{j=i+1}^{n-1}(i+j)^k \\
&= (2n-1)^k + \sum\limits_{i=1}^{n-2} (n+i)^k \\
&= \sum\limits_{i=n+1}^{2n-1} i^k
\end{aligned}
于是我们搞出了一个一阶递推式。
然后就可以 O(n^2) 做了好棒棒诶!
注意到这是个 k+1 次多项式,那么 f_n 显然也是个关于 n 的 k+2 次多项式。
所以线性筛求出所有 i^k 并预处理前后缀积、阶乘及阶乘的逆,拉格朗日插值即可。
代码:
1 |
|