「loj - 2983」「WC2019」数树

link。

若两棵树边集的交集为 \(S\),则答案等于 \(y^{n - |S|}\)


op = 0


op = 1

\(f(S)\) 表示交集为 \(S\) 的答案,反演 \(f(S) = \sum_{S\subseteq T}(-1)^{|T|-|S|}g(T)\)

化一下式子:

\[\begin{aligned} &\sum_{S}f(S)\times y^{n - |S|} \\ =&\sum_{S}\sum_{S\subseteq T}(-1)^{|T| - |S|}g(T)\times y^{n - |S|} \\ =&y^n\times\left(\sum_{T}g(T)\sum_{S\subseteq T}(-1)^{|T|-|S|}y^{-|S|}\right) \\ =&y^n\times\left(\sum_{T}g(T)\sum_{i=0}^{|T|}\binom{|T|}{i}(-1)^{|T|-i}y^{-i}\right) \\ =&y^n\times\left(\sum_{T}g(T)(y^{-1} - 1)^{|T|}\right) \\ \end{aligned} \]

\(u = (y^{-1} - 1)\),则答案为 \(y^n\times (\sum_{T}g(T)u^{|T|})\)

\(T\) 中的边将原图连成了大小分别为 \(a_1, a_2, \dots a_k\)\(k = n - |T|\) 个连通块,容易发现方案数只和 \(\{a_i\}\) 有关。

利用 prufer 序列进行计数:

\[\begin{aligned} &\sum_{\sum_{i=1}^{k}p_i=k-2}\frac{(k-2)!}{\prod_{i=1}^{k}p_i!}\prod_{i=1}^{k}a_i^{p_i+1}\\ =&\left(\prod_{i=1}^{k}a_i\right)\times \left((k-2)![x^{k-2}]\exp(\sum a_ix)\right)\\ =&\prod_{i=1}^{k}a_i\times (\sum_{i=1}^{k}a_i)^{k-2} \\ =&\prod_{i=1}^{k}a_i\times n^{k-2} \\ \end{aligned} \]

因此 \(g(T) = n^{k-2}\times\prod_{i=1}^{k}a_i\)

\(g(T)\) 代入,得到 \(y^n\times (\sum_{T}\prod_{i=1}^{k}a_i\times n^{k-2}u^{n-k})\)

已经可以做 \(O(n^2)\) 的树形 dp 了。

考虑其组合意义:大小为 \(a_i\) 的连通块里面选一个贡献 \(n\times u^{-1}\),于是可以做 \(O(n)\) 的树形 dp。

\(u^{-1}\) 里面含有因子 \(1 / (1 - y)\),特判 \(y = 1\)


op = 2

感觉可以对上一种情况中的 dp 数组列生成函数式,解个微分方程什么的。

然而过得太久我完全忘完了,推不出来(扶额)。没办法,还是用常规的那一套吧。

大家可以去试试,理论上能够解出和下面一样的结果。

如果已知 \(\{a_i\}\),答案可以表示成 \(A\times \frac{1}{k!}\frac{n!}{\prod a_i!}h(a_i)\),其中 \(A\) 是一个常数。

注意到这里有两棵树,所以 \(h(a_i), A\) 的表达式与上文不同(相应系数要平方)。

这里 \(\frac{1}{k!}\) 可以这么理解:我们方案数实际上计算的是第 \(i\) 个连通块 \(a_i\) 染上第 \(i\) 种颜色的方案数。然而真正的方案数不包括染色方案数,所以需要去重。

冷静一下,你发现这就是对 \(h(i)\) 的 EGF(指数型生成函数)\(H(x) = \sum h(i)\frac{x^i}{i!}\)\(\exp H = \sum \frac{H^i}{i!}\) 运算。

然后套板子即可。

posted @ 2019-12-24 19:18  Tiw_Air_OAO  阅读(330)  评论(0)    收藏  举报