zoukankan      html  css  js  c++  java
  • 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 求答案即可。

  • 相关阅读:
    Rest Project Performace Pressure Test
    Tomcat APR & Linux Optimization
    关于启用 HTTPS 的一些经验分享(二)
    关于启用 HTTPS 的一些经验分享(一)
    JVM垃圾回收机制总结:调优方法
    LVS+Keepalived搭建高可用负载均衡
    LVS搭建负载均衡(二)DR模型
    LVS搭建负载均衡(一)NAT模型
    编译安装Nginx和PHP(带编译mysql)
    centos7下利用httpd2.4配置svn并使用Ldap用户认证
  • 原文地址:https://www.cnblogs.com/Soulist/p/13658875.html
Copyright © 2011-2022 走看看