3.22
Minimum Spanning Trees
给定一张 \(n\) 个点的完全图,每条边有 \(p_0\) 的概率不存在,\(\forall 1\le i\le k\),有 \(p_i\) 的概率边权为 \(i\),求所有可能总权值的概率.
\(n\le 40, k\le 4\)
数据严重偏小了似乎.
\(f_{i, j, k}\) 表示权值为 \(1-i\) 的边,\(j\) 个有标号点组成的权值为 \(k\) 的生成树的概率,考虑直接 dp 的话,难以处理比当前权值 \(i\) 大的边,于是这个 dp 需要一个辅助数组 \(g_{i, j, k}\) 表示将权值 \(\ge i\) 的边权全部视为边权为 \(i\),我们转移 \(g\) 时,枚举只保留 \(<i\) 的边时 \(1\) 号点所在的连通块大小转移,转移 \(f\) 时枚举只保留 \(\le i\) 的边时 \(1\) 号点所在的连通块大小容斥转移,这两个是经典的.
这么直接做就可以过了,然而 jiangly 哥哥指出,这题可以看作一个二元 GF,一维维护点数,一维维护边权和,拿 \(F_v(x, y)\) 表示由 \(\le v\) 的边组成的所有 mst 的生成函数,注意到将 \(\ge v\) 的边权视为 \(v\) 的所有mst的生成函数 和 将 \(> v\) 的边权视为 \(v\) 的所有 mst 的生成函数是相等的,于是可以列出一个生成函数方程,发现如果忽略 \(y\),很像一个 \(\exp\) 的形式. 于是考虑对 \(y\) 插值,利用 \(\sum a_ia_j = \binom{n}{2} - \sum\binom{a_i}{2}\) 拆开指数上的系数即可将其看作一个 \(\exp\) 的形式,于是就可以用 \(\exp\) 和 \(\ln\) 快速计算了,需要维护 \(nk\) 个点值,单次 \(\exp\) 和 \(\ln\) 写 \(\mathcal{O}(n^2)\) 的半在线卷积,总共推 \(k\) 轮,时间复杂度为 \(\mathcal{O}(n^3k^2)\).
应该也可以 dp 算点值,需要一些关于组合意义的思考.