2024.7.9 鲜花
頭ン痛 - feat. 重音テト
我没找到 QaQ
prufer 序列,简单来说就是 \(n\) 个节点的树双射一个长度 \(n-2\) 值域 \([1,n]\) 的序列。
构造过程就是每次删一个编号最小叶子,记录其父节点。
本图来自baoziwu2,侵删
显然堆 \(n\log n\) 可做,也可以扫一遍所有标号,对于已经删除的父节点,判断其度数和标号是否该选,分讨可做 \(O(n)\)
然后有定理:
\(k\) 个点完全图有 \(k^{k-2}\) 棵生成树。
\(n\) 个点的图有 \(k\) 个联通块,第 \(i\) 个联通块点数为 \(s_i\) ,添加 \(k-1\) 条边使其联通,有 \(n^{k-2}\times \prod\limits_{i=1}^ks_i\) 种方案。
证明可以考虑缩点后为生成树,考虑每个联通块内的点个数,可以得到。
updata:找到板子了 CF156D
简要题解
首先将至多容斥成至少,然后考虑可以先求出有 \(m+1\) 个连通块的个数,可以 dp,在加 \(m\) 条边联通,乘上 \(n^{k-2}\times \prod\limits_{i=1}^ks_i\) 即可。
直接 \(DP\) 是 \(n^3\),可以用多项式优化到 \(n^2\log n\),但我不会
图——from STA_Morlin 为什么不让折叠捏???
本文来自博客园,作者:xrlong,转载请注明原文链接:https://www.cnblogs.com/xrlong/p/18291012
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。