[学习笔记]Mys_C_K的链接好题 - 组合计数 - 多项式理论 - EGF学习笔记

重新认知了一遍关于EGF(指数生成函数)的理论。
两个对象A和B的拼接对等于EGF的乘积,这里的拼接是区分A和B的。
因此如果要将同类的对象拼接起来,例如如果要拼接k次,那么对等于 A k k ! \frac{A^k}{k!} k!Ak
因此,若一个对象B是若干A自身拼接而成,那么: B = ∑ i ≥ 0 A i i ! = e A B=\sum_{i\geq0}\frac{A^i}{i!}=e^A B=i0i!Ai=eA
这里的A和B都是EGF。
几个例子,例如置换是轮换拼接若干次得到的,而轮换的EGF是: A ( x ) = ∑ i ≥ 1 ( i − 1 ) ! i ! x i = ∑ i ≥ 1 1 i x i = − ln ⁡ ( 1 − x ) A(x)=\sum_{i\geq1}\frac{(i-1)!}{i!}x^i=\sum_{i\geq1}\frac{1}{i}x^i=-\ln(1-x) A(x)=i1i!(i1)!xi=i1i1xi=ln(1x)因此置换的EGF是 B ( x ) = e A ( x ) = e − ln ⁡ ( 1 − x ) = 1 1 − x = ∑ i ≥ 0 x i B(x)=e^{A(x)}=e^{-\ln(1-x)}=\frac1{1-x}=\sum_{i\geq0}x^i B(x)=eA(x)=eln(1x)=1x1=i0xi可以验证置换数量是 n ! n! n!
上述例子可以直接加强为求所有轮换大小在S集合中的置换数量,这样只要将轮换的EGF中在S集合的项保留即可。
再例如无向图B是无向连通图A的若干次拼接,因此可以直接通过 A = ln ⁡ B A=\ln B A=lnB得到(实测竟然比多项式求逆快???)
再例如这个题:
问有多少 n n n个点的有标号的图,其有 m m m个联通块,且每个联通块都是一条链。(链不分首尾,即 1 − 2 − 3 1-2-3 123 3 − 2 − 1 3-2-1 321认为是相同的)。要求线性。
其实直接套用上文方法即可:
显然答案 H m H_m Hm是由一条链的情况 F F F的拼接 m m m次,而:
F ( x ) = ∑ n ≥ 1 n ! + [ n = = 1 ] 2 n ! x n = x + 1 2 ∑ n ≥ 2 x i = x 2 ( 1 + 1 1 − x ) F(x)=\sum_{n\geq1}\frac{\frac{n!+[n==1]}{2}}{n!}x^n=x+\frac{1}{2}\sum_{n\geq2}x^i=\frac x2\left(1+\frac 1{1-x}\right) F(x)=n1n!2n!+[n==1]xn=x+21n2xi=2x(1+1x1)
因此:
h m , n = n ! [ x n ] H m ( x ) = n ! [ x n ] F m ( x ) m ! = n ! [ x n ] x m 2 m m ! ( 1 + 1 1 − x ) m = n ! 2 m m ! ∑ i = 0 m ( m i ) [ x n − m ] ( 1 1 − x ) i h_{m,n}=n!\left[x^n\right]H_m(x)=n!\left[x^n\right]\frac{F^m(x)}{m!}\\=n!\left[x^n\right]\frac{x^m}{2^mm!}\left(1+\frac{1}{1-x}\right)^m=\frac{n!}{2^mm!}\sum_{i=0}^m\binom{m}{i}\left[x^{n-m}\right]\left(\frac1{1-x}\right)^i hm,n=n![xn]Hm(x)=n![xn]m!Fm(x)=n![xn]2mm!xm(1+1x1)m=2mm!n!i=0m(im)[xnm](1x1)i
然后:
[ x k ] ( 1 1 − x ) m = ( k + m − 1 m − 1 ) \left[x^k\right]\left(\frac1{1-x}\right)^m=\binom{k+m-1}{m-1} [xk](1x1)m=(m1k+m1)
(注意对m=0特判)
那么带入上式,可以得知答案是:
h m , n = n ! 2 m m ! ( [ n = = m ] + ∑ i = 1 m ( m i ) ( n − m + i − 1 i − 1 ) ) h_{m,n}=\frac{n!}{2^mm!}\left([n==m]+\sum_{i=1}^m\binom{m}{i}\binom{n-m+i-1}{i-1}\right) hm,n=2mm!n!([n==m]+i=1m(im)(i1nm+i1))
然后就可以 O ( n + m ) O(n+m) O(n+m)的计算出答案了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值