WC2019 数树

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 求答案即可。

上一篇:mysql笔记8: 用通配符进行过滤


下一篇:基础的检索语句