WC2019 数树
题意:
给定 \(n,y,op\)
问题 \(0\) :给定两棵树 \(T_1,T_2\),求给每个点赋值 \([1,y]\) 的方案数,使得如果存在一条路径 \(p\to q\) 同时属于两棵树,那么这两个点必须是相同颜色。
问题 \(1\):给定 \(T_2\) ,假设 \(T_1\) 取所有可能的树 \(n^{n-2}\) 种,求问题 \(0\) 的答案和。
问题 \(2\):对于所有可能的 \(T_2\),求问题 \(1\) 的答案和。
答案对 \(998244353\) 取模,保证 \(n\le 10^5,y<P\)
\(\rm Sol:\)
\(\rm op=0\)
对于问题 \(0\),我们只需要保留两棵树的交,那么这样剩余的联通块的数量设为 \(cnt\),则答案为 \(y^{cnt}\)
注意到 \(cnt=n-|E_1\land E_2|\)
对于问题 \(0\),我们暴力统计后者即可。
\(\rm op=1\)
所求为:
\[\sum_{E_1} y^{n-|E_1\land E_2|} \]设 \(A=E_1\land E_2\)
\[\sum_A y^{n-|A|}\sum_{E_1} [~|E_1\land E_2|=A~] \]等价于统计多少种边集满足 \(E_1\) 构成树且其与 \(E_2\) 的交集的大小恰好为 \(A\)。
容斥原理:
\[|\lor^n S_i|=\sum_{k=0}^n (-1)^{k+1}|\land^k S_i| \]考虑容斥原理的式子,对于 \(F(A)=\sum_{S\subseteq A}\sum_{P\subseteq S} (-1)^{|S|-|P|}F(P)\)
证明:
\[F(A)=\sum_{S\subseteq A}\sum_{P\subseteq S} F(P)\cdot (-1)^{|S|-|P|} \]则对于每个 \(F(P)\) 有其被计算 \(\sum_{k=0}^{|A|-|P|} (-1)^k \dbinom{|A|-|P|}{k}\),对于 \(P\ne A\),有其被计算 \(0\) 次。
事实上,\(|E_1\land E_2|=A\) 是非常难以处理的,我们希望其变成 \(S\subseteq (E_1\land E_2)\to S\subseteq E_1,S\subseteq E_2\) 的形式。
\[\sum_{E_2} y^{n-|E_1\land E_2|} \] \[\sum_{E_2} \sum_{S\subseteq (E_2\land E_1)}\sum_{P\subseteq S} (-1)^{|S|-|P|} y^{n-|P|} \] \[\sum_{E_2}\sum_{S\subseteq E_1,S\subseteq E_2} \sum_{P\subseteq S} (-1)^{|S|-|P|} y^{n-|P|} \] \[\sum_{P} y^{n-|P|}\cdot (-1)^{-|P|}\sum_{P\subseteq S}(-1)^{|S|}\bigg(\sum_{S\subseteq E_1}\bigg)\bigg(\sum_{S\subseteq E_2}\bigg) \]事实上后者可以简单设为 \(G(S)\)
于是所求为:
\[\sum_{P} y^{n-|P|}\cdot (-1)^{-|P|}\sum_{P\subseteq S} (-1)^{|S|} G(S) \] \[\sum_{S} G(S)(-1)^{|S|}\sum_{P\subseteq S} y^{n-|P|}\cdot (-1)^{-|P|} \] \[\sum_{S} G(S)y^{n-|S|}\sum_{P\subseteq S} (-1)^{|S|-|P|}y^{|S|-|P|} \] \[\sum_{S} G(S)y^{n-|S|}\sum_{P\subseteq S} (-y)^{|P|} \] \[\sum_{S} G(S)y^{n-|S|}\sum_{k=0}^{|S|}\dbinom{|S|}{k}(-y)^k \] \[\sum_{S} G(S)y^{n-|S|}(1-y)^{|S|} \]前者为多少 \(S\) 满足其属于 \(E_2\) 且有 \(E_1\) 包含于其
所以可以直接视为:
\[\sum_{S\subseteq E_2} G(S)y^{n-|S|}(1-y)^{|S|} \]我们需要统计 \(E_2\) 的一个边集下的生成树的数量。
不妨设 \(S\) 构成了若干个联通块,第 \(i\) 个联通块大小为 \(a_i\),则有 \(G(S)=\prod a_i\times n^{k-2}\),\(k\) 为联通块数量。
考虑证明:
- \(\rm Matrix-Tree\) 定理。
我们先将 S 中的所有联通块缩起来,考虑构建一张新图,我们连接 \(i\to j\) 的无向边,但是连接重边数量为 \(a_i\times a_j\)
那么根据矩阵树定理,我们可以得到其 Kirchhoff 矩阵为:
\(\begin{bmatrix}a_1(\sum a -a_{1})&...& 0\\0&a_2(\sum a-a_{2})&...0\\0&...&0\\0&...&a_k(\sum a-a_{k})\end{bmatrix}-\begin{bmatrix}0&...& a_{1}\times a_{k}\\a_{2}\times a_{1}&0&...a_{2}\times a_{k}\\a_{k-1}\times a_{1}&...&a_{k-1}\times a_{k}\\a_{k}\times a_{1}&...&0\end{bmatrix}\)
即:
\[\begin{bmatrix}a_1(n -a_{1})&...& ...&-a_1\times a_k\\-a_2\times a_1&a_2(n-a_{2})&...&a_2\times a_k\\...&...&...&...\\-a_{k-1}\times a_1&...&a_{k-1}\times(n-a_{k-1})&-a_{k-1}\times a_k\\-a_1\times a_{k}&...&...&a_k(n-a_{k})\end{bmatrix} \]然后我们删除一行一列后的行列式即为答案:
\[\begin{bmatrix}a_1(n -a_{1})&...& ...\\-a_2\times a_1&a_2(n-a_{2})&...\\...&...&...\\-a_{k-1}\times a_1&...&a_{k-1}\times(n-a_{k-1})\end{bmatrix} \]根据行列式的性质,我们把每行的一个公共系数 \(a_i\) 都提取出来后得到:
\[\prod_{i=1}^{n-1}a_i\begin{bmatrix}(n -a_{1})&...& ...\\-a_1&(n-a_{2})&...\\...&...&...\\-a_{1}&...&(n-a_{k-1})\end{bmatrix} \]然后我们将第 \(2\to n-1\) 列都加到第 \(1\) 列上会得到:(这里的 \(n\) 指联通块数量)
\[\begin{bmatrix}a_k&...& ...\\a_k&(n-a_{2})&...\\...&...&...\\a_k&...&(n-a_{k-1})\end{bmatrix} \]然后我们把每行都减去第一行得到:
\[\begin{bmatrix}a_k&...& ...\\0&n&...\\...&...&...\\0&...&n\end{bmatrix} \]于是其行列式为 \(n^{k-2}a_k\),所以答案为:\(\Big(\prod a_i \Big)n^{k-2}\)
- \(\rm prufer\) 序列。
将每个联通块视为一个大联通块,设其出现次数为 \(k\),则其对于答案的贡献为 \(a_i^{k+1}\)
由于每个 \(\rm prufer\) 序列都是合法的,我们等价于求有 \(k-2\) 个位置,每个数出现次数为 \(i\) 时对于答案的贡献为 \(a_j^{i+1}\),求所有方案的权值。
构建每个数的 EGF 为 \(F(a_i)\),我们得到:
\[Ans=\prod a_i \bigg((k-2)![x^{k-2}]\prod F(a_i)\bigg) \] \[Ans=\prod a_i\bigg((k-2)![x^{k-2}]\prod e^{a_ix}\bigg) \] \[Ans=\prod a_i\frac{(k-2)!(\sum a_i)^{k-2}}{(k-2)!} \] \[Ans=\prod a_i \times n^{k-2} \]回到所求,我们所求为:
\[\sum_{S\subseteq E_2} G(S)\times y^{n-|S|}(1-y)^{|S|} \] \[\sum_{S\subseteq E_2} y^{n-|S|}(1-y)^{|S|}n^{k-2}\prod a_i \]我们注意到,联通块数总是等于 \(n~-\) 边数的。所以有所求为:
\[\sum_{S\subseteq E_2} y^{k}(1-y)^{n-k}n^{k-2}\prod a_i \] \[\frac{(1-y)^n}{n^2}\sum_{S\subseteq E_2}\prod a_i\frac{ny}{1-y} \]设后者为 \(\tau\),则所求为:
\[\frac{(1-y)^n}{n^2}\sum_{S\subseteq E_2}\prod a_i\tau \]我们考虑后式的实际意义,视为将原图划分为若干个联通块,每个联通块的大小乘以 \(\tau\) 的贡献和。
考虑组合意义,视为划分成若干个联通块,每个联通块恰好放入一个球,放入球的贡献为 \(\tau\) 的贡献和。
这样可以设 \(f_{u,0/1}\) 表示当前考虑到点 \(u\) 的子树,这个联通块是否放入球的方案数。
复杂度 \(\mathcal O(n)\)
\(\rm op=2\)
将 \(\rm op=1\) 的式子代入得到:
\[\sum_{S} G(S)y^{n-|S|}(1-y)^{|S|} \]其中,\(G(S)\) 为:
\[\bigg(\sum_{S\subseteq E_1}\bigg)\bigg(\sum_{S\subseteq E_2}\bigg) \]事实上两者是独立的,设前者为 \(F(S)\),则有 \(G(S)=F(S)^2\)
于是所求为:
\[\sum_S y^{n-|S|}(1-y)^{|S|}n^{2k-4}\prod a_i^2 \] \[\sum_{S} y^k(1-y)^{n-k} n^{2k-4}\prod a_i^2 \]注意到 \(S\) 枚举的是全集,所以所有的可能的划分集合的方式都会被我们枚举到。
实际上问题等价于将 \(n\) 个数任意划分集合,设第 \(i\) 个集合的大小为 \(a_i\),集合总数为 \(k\),则贡献为:
\[y^k(1-y)^{n-k}n^{2k-4}\prod a_i^2\prod a_i^{a_i-2} \] \[\frac{y^k(1-y)^{n-k}n^{2k}}{n^4}\prod a_i^{a_i} \] \[\frac{(1-y)^{n}}{n^4}\prod \frac{y\times n^2}{(1-y)}a_i^{a_i} \]那么实际上这是一个序列划分计数的问题。
最后乘以的 \(a_i^{a_i-2}\) 是为了表示对于某个联通块保留若干个条边使其构成生成树的方案。
我们构建集合的 EGF,为:
\[F(x)=\sum_{k=0}^{\infty} \frac{y\times n^2\times k^{k}x^k}{(1-y)k!} \]于是对于某个 \(t\),满足 \(|S|=t\) 的方案数的 EGF 为:
\[\sum_{k=0}^{\infty} \frac{F(x)}{k!}=\exp(F(x)) \]然后跑一遍 EGF 求答案即可。