WC2019 数树

WC2019 数树

题意:

给定 (n,y,op)

问题 (0) :给定两棵树 (T_1,T_2),求给每个点赋值 ([1,y]) 的方案数,使得如果存在一条路径 (p o q) 同时属于两棵树,那么这两个点必须是相同颜色。

问题 (1):给定 (T_2) ,假设 (T_1) 取所有可能的树 (n^{n-2}) 种,求问题 (0) 的答案和。

问题 (2):对于所有可能的 (T_2),求问题 (1) 的答案和。

答案对 (998244353) 取模,保证 (nle 10^5,y<P)

( m Sol:)

( m op=0)

对于问题 (0),我们只需要保留两棵树的交,那么这样剩余的联通块的数量设为 (cnt),则答案为 (y^{cnt})

注意到 (cnt=n-|E_1land E_2|)

对于问题 (0),我们暴力统计后者即可。

( m op=1)

所求为:

[sum_{E_1} y^{n-|E_1land E_2|} ]

(A=E_1land E_2)

[sum_A y^{n-|A|}sum_{E_1} [~|E_1land 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_{Ssubseteq A}sum_{Psubseteq S} (-1)^{|S|-|P|}F(P))

证明:

[F(A)=sum_{Ssubseteq A}sum_{Psubseteq S} F(P)cdot (-1)^{|S|-|P|} ]

则对于每个 (F(P)) 有其被计算 (sum_{k=0}^{|A|-|P|} (-1)^k dbinom{|A|-|P|}{k}),对于 (P e A),有其被计算 (0) 次。

事实上,(|E_1land E_2|=A) 是非常难以处理的,我们希望其变成 (Ssubseteq (E_1land E_2) o Ssubseteq E_1,Ssubseteq E_2) 的形式。

[sum_{E_2} y^{n-|E_1land E_2|} ]

[sum_{E_2} sum_{Ssubseteq (E_2land E_1)}sum_{Psubseteq S} (-1)^{|S|-|P|} y^{n-|P|} ]

[sum_{E_2}sum_{Ssubseteq E_1,Ssubseteq E_2} sum_{Psubseteq S} (-1)^{|S|-|P|} y^{n-|P|} ]

[sum_{P} y^{n-|P|}cdot (-1)^{-|P|}sum_{Psubseteq S}(-1)^{|S|}igg(sum_{Ssubseteq E_1}igg)igg(sum_{Ssubseteq E_2}igg) ]

事实上后者可以简单设为 (G(S))

于是所求为:

[sum_{P} y^{n-|P|}cdot (-1)^{-|P|}sum_{Psubseteq S} (-1)^{|S|} G(S) ]

[sum_{S} G(S)(-1)^{|S|}sum_{Psubseteq S} y^{n-|P|}cdot (-1)^{-|P|} ]

[sum_{S} G(S)y^{n-|S|}sum_{Psubseteq S} (-1)^{|S|-|P|}y^{|S|-|P|} ]

[sum_{S} G(S)y^{n-|S|}sum_{Psubseteq 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_{Ssubseteq E_2} G(S)y^{n-|S|}(1-y)^{|S|} ]

我们需要统计 (E_2) 的一个边集下的生成树的数量。

不妨设 (S) 构成了若干个联通块,第 (i) 个联通块大小为 (a_i),则有 (G(S)=prod a_i imes n^{k-2})(k) 为联通块数量。

考虑证明:

  • ( m Matrix-Tree) 定理。

我们先将 S 中的所有联通块缩起来,考虑构建一张新图,我们连接 (i o j) 的无向边,但是连接重边数量为 (a_i imes a_j)

那么根据矩阵树定理,我们可以得到其 Kirchhoff 矩阵为:

(egin{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}-egin{bmatrix}0&...& a_{1} imes a_{k}\a_{2} imes a_{1}&0&...a_{2} imes a_{k}\a_{k-1} imes a_{1}&...&a_{k-1} imes a_{k}\a_{k} imes a_{1}&...&0end{bmatrix})

即:

[egin{bmatrix}a_1(n -a_{1})&...& ...&-a_1 imes a_k\-a_2 imes a_1&a_2(n-a_{2})&...&a_2 imes a_k\...&...&...&...\-a_{k-1} imes a_1&...&a_{k-1} imes(n-a_{k-1})&-a_{k-1} imes a_k\-a_1 imes a_{k}&...&...&a_k(n-a_{k})end{bmatrix} ]

然后我们删除一行一列后的行列式即为答案:

[egin{bmatrix}a_1(n -a_{1})&...& ...\-a_2 imes a_1&a_2(n-a_{2})&...\...&...&...\-a_{k-1} imes a_1&...&a_{k-1} imes(n-a_{k-1})end{bmatrix} ]

根据行列式的性质,我们把每行的一个公共系数 (a_i) 都提取出来后得到:

[prod_{i=1}^{n-1}a_iegin{bmatrix}(n -a_{1})&...& ...\-a_1&(n-a_{2})&...\...&...&...\-a_{1}&...&(n-a_{k-1})end{bmatrix} ]

然后我们将第 (2 o n-1) 列都加到第 (1) 列上会得到:(这里的 (n) 指联通块数量)

[egin{bmatrix}a_k&...& ...\a_k&(n-a_{2})&...\...&...&...\a_k&...&(n-a_{k-1})end{bmatrix} ]

然后我们把每行都减去第一行得到:

[egin{bmatrix}a_k&...& ...\0&n&...\...&...&...\0&...&nend{bmatrix} ]

于是其行列式为 (n^{k-2}a_k),所以答案为:(Big(prod a_i Big)n^{k-2})

  • ( m prufer) 序列。

将每个联通块视为一个大联通块,设其出现次数为 (k),则其对于答案的贡献为 (a_i^{k+1})

由于每个 ( m prufer) 序列都是合法的,我们等价于求有 (k-2) 个位置,每个数出现次数为 (i) 时对于答案的贡献为 (a_j^{i+1}),求所有方案的权值。

构建每个数的 EGF 为 (F(a_i)),我们得到:

[Ans=prod a_i igg((k-2)![x^{k-2}]prod F(a_i)igg) ]

[Ans=prod a_iigg((k-2)![x^{k-2}]prod e^{a_ix}igg) ]

[Ans=prod a_ifrac{(k-2)!(sum a_i)^{k-2}}{(k-2)!} ]

[Ans=prod a_i imes n^{k-2} ]


回到所求,我们所求为:

[sum_{Ssubseteq E_2} G(S) imes y^{n-|S|}(1-y)^{|S|} ]

[sum_{Ssubseteq E_2} y^{n-|S|}(1-y)^{|S|}n^{k-2}prod a_i ]

我们注意到,联通块数总是等于 (n~-) 边数的。所以有所求为:

[sum_{Ssubseteq E_2} y^{k}(1-y)^{n-k}n^{k-2}prod a_i ]

[frac{(1-y)^n}{n^2}sum_{Ssubseteq E_2}prod a_ifrac{ny}{1-y} ]

设后者为 ( au),则所求为:

[frac{(1-y)^n}{n^2}sum_{Ssubseteq E_2}prod a_i au ]

我们考虑后式的实际意义,视为将原图划分为若干个联通块,每个联通块的大小乘以 ( au) 的贡献和。

考虑组合意义,视为划分成若干个联通块,每个联通块恰好放入一个球,放入球的贡献为 ( au) 的贡献和。

这样可以设 (f_{u,0/1}) 表示当前考虑到点 (u) 的子树,这个联通块是否放入球的方案数。

复杂度 (mathcal O(n))

( m op=2)

( m op=1) 的式子代入得到:

[sum_{S} G(S)y^{n-|S|}(1-y)^{|S|} ]

其中,(G(S)) 为:

[igg(sum_{Ssubseteq E_1}igg)igg(sum_{Ssubseteq E_2}igg) ]

事实上两者是独立的,设前者为 (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^2prod 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 imes n^2}{(1-y)}a_i^{a_i} ]

那么实际上这是一个序列划分计数的问题。

最后乘以的 (a_i^{a_i-2}) 是为了表示对于某个联通块保留若干个条边使其构成生成树的方案。

我们构建集合的 EGF,为:

[F(x)=sum_{k=0}^{infty} frac{y imes n^2 imes k^{k}x^k}{(1-y)k!} ]

于是对于某个 (t),满足 (|S|=t) 的方案数的 EGF 为:

[sum_{k=0}^{infty} frac{F(x)}{k!}=exp(F(x)) ]

然后跑一遍 EGF 求答案即可。

原文地址:https://www.cnblogs.com/Soulist/p/13658875.html