全力施工中。
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 - 求第一类斯特林数 题解