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