从零开始的斯特林数问题

全力施工中。

update:基础部分已完成,缺少例题。

第一类斯特林数

定义

轮换斯特林数(s(n,m)=egin{bmatrix}n\mend{bmatrix})表示将n个元素分成为m个环的方案数。

递推式 (s(n,m)=s(n-1,m-1)+(n-1)s(n-1,m)),边界(s(0,0)=1)

性质

[egin{aligned} &sum_{i=0}^ns(n,i)=n!\ &sum_{i=0}^ns(n,i)(-1)^i=0(nge2)\ &sum_{i=0}^ns(n,i)x^i=x^{overline{n}}\ &sum_{i=0}^ns(n,i)(-1)^{n-i}x^i=x^{underline{n}} end{aligned} ]

证明自行操作。

母函数

设它的母函数为(G_n(x)),易知

[G_n(x)=x^overline{n}=prod_{i=0}^{n-1}(x+i)\ G_{2n}(x)=prod_{i=0}^{n-1}(x+i)prod_{i=0}^{n-1}(n+x+i)=G_n(x)G_n(x+n)\ G_{2n}(x+1)=prod_{i=0}^{n-1}(x+i)prod_{i=0}^{n-1}(n+x+i)=(x+n-1)G_n(x)G_n(x+n)\ ]

其中

[egin{aligned} G_n(x+n)&=sum_{i=0}^n s(n,i)(x+n)^i\ &=sum_{i=0}^ns(n,i)sum_{j=0}^iC(i,j)n^{i-j}x^j\ &=sum_{i=0}^ns(n,i)sum_{j=0}^nfrac{i!}{j! imes (i-j)!}n^{i-j}x^j\ &=sum_{j=0}^nfrac{x^j}{j!}sum_{i=0}^ns(n,i) imes i! imesfrac{n^{i-j}}{(i-j)!} end{aligned} ]

于是快速地从(G_n(x))得到(G_n(x+n))。(参考附录)

因此采取分治策略计算(G_n(x)),复杂度与多项式求逆相近,为(O(nlog n))

第二类斯特林数

定义

子集斯特林数(S(n,m)=egin{Bmatrix}n\mend{Bmatrix})表示将n个元素分成m个组的方案数。

递推式 (S(n,m)=S(n-1,m-1)+mS(n-1,m)),边界(S(0,0)=1)

性质

[egin{aligned} &sum_{i=0}^mS(n,i) imes i! imes C(m,i)=m^n\ &S(n,m)=frac{1}{m!}sum_{i=0}^m(-1)^iC(m,i)(m-i)^n\ &sum_{i=0}^ni^m=sum_{i=0}^mfrac{(n+1)^{underline{i+1}}S(m,i)}{i+1} end{aligned} ]

前两点自行脑补,下面用前两点推导第三点

[sum_{i=0}^ni^m =sum_{i=0}^nsum_{j=0}^iS(m,j) imes j! imes C(i,j) =sum_{i=0}^nsum_{j=0}^mS(m,j) imes j! imes C(i,j)\ =sum_{j=0}^mS(m,j) imes j!sum_{i=0}^nC(i,j) =sum_{j=0}^mS(m,j) imes j! imes C(n+1,j+1)\ =sum_{j=0}^mfrac{S(m,j) imes j! imes (n+1)!}{(j+1)! imes (n-j)!} =sum_{i=0}^mfrac{(n+1)^{underline{i+1}}S(m,i)}{i+1} ]

母函数

设它的母函数为(G_n(x)),易知

[egin{aligned} G_n(x)&=sum_i S(n,i)x^i\ &=sum_ifrac{1}{i!}sum_{j=0}^i(-1)^jC(i,j)(i-j)^nx^i\ &=sum_isum_jfrac{(-1)^j(i-j)^n}{j!(i-j)!}x^i\ &=(sum_{i=0}frac{(-1)^i}{i!}x^i)(sum_{i=0}frac{i^n}{i!}x^i) end{aligned} ]

就很好做了似乎。

斯特林反演

定义

[f(n)=sum_{i=0}^n S(n,i)g(i) Leftrightarrow g(n)=sum_{i=0}^n(-1)^{n-i}s(n,i)f(i) ]

推导

结合幂、阶乘幂的变换

[egin{aligned} m^underline n &=sum_{i=0}^ns(n,i)(-1)^{n-i}m^i\ &=sum_{i=0}^ns(n,i)(-1)^{n-i}sum_{j=0}^m S(i,j) imes j! imes C(m,j)\ &=sum_{i=0}^ns(n,i)(-1)^{n-i}sum_{j=0}^m S(i,j) imes m^underline j\ &=sum_{i=0}^ns(n,i)(-1)^{n-i}sum_{j=0}^n S(i,j) imes m^underline j\ &=sum_{j=0}^nm^underline jsum_{i=0}^n(-1)^{n-i}s(n,i)S(i,j)\ end{aligned} ]

可知等式

[sum_{i=m}^n(-1)^{n-i}s(n,i)S(i,m)=sum_{i=0}^n(-1)^{n-i}s(n,i)S(i,m)=[n=m] ]

类似地也能得等式

[sum_{i=m}^n(-1)^{n-i}S(n,i)s(i,m)=sum_{i=0}^n(-1)^{n-i}S(n,i)s(i,m)=[n=m] ]

于是先证从左到右

[egin{aligned} g(n)&=sum_{i=0}^n(-1)^{n-i}s(n,i)sum_{j=0}^i S(i,j)g(j)\ &=sum_{i=0}^n(-1)^{n-i}s(n,i)sum_{j=0}^n S(i,j)g(j)\ &=sum_{j=0}^n g(j)sum_{i=0}^n(-1)^{n-i}s(n,i)S(i,j)\ &=g(n) end{aligned} ]

类似地也能证明从右到左。

附录

上升阶乘幂(x^{overline{n}}=frac{(x+n-1)!}{(x-1)!}),下降阶乘幂(x^{underline{x}}=frac{x!}{(x-n)!}),两者的关系是(x^{overline{n}}=(-1)^nx^{underline{n}})(x^{underline{n}}=(-1)^nx^{overline{n}})

递推式的参考

母函数的参考

一类卷积的处理

问题:已知(A(x)=sum_{i=0}^n a_ix^i), (B(x)=sum_{i=0}^n b_ix^i),求解(C(x)=sum_{i=0}^nx^i(sum_{j=i}^na_jb_{j-i}))

做法:设对于(P(x)=sum_{i=0}^np_ix^i)(P_r(x)=sum_{i=0}^np_{n-i}x^i),则

[egin{aligned} C_r(x)&=sum_{i=0}^nx^i(sum_{j=n-i}^na_jb_{j-(n-i)})\ &=sum_{i=0}^nx^i(sum_{j=0}^ia_{j+(n-i)}b_j)\ &=sum_{i=0}^nx^i(sum_{j=0}^iA(x)_{j+(n-i)}B(x)_j)\ &=sum_{i=0}^nx^i(sum_{j=0}^iA_r(x)_{i-j}B(x)_j)\ &=A_r(x)B(x) end{aligned} ]

习题

[CF960G] Bandit Blues - 求第一类斯特林数 题解

原文地址:https://www.cnblogs.com/nosta/p/10970388.html