全力施工中。
update:基础部分已完成,缺少例题。
第一类斯特林数
定义
轮换斯特林数\(s(n,m)=\begin{bmatrix}n\\m\end{bmatrix}\)表示将n个元素分成为m个环的方案数。
递推式 \(s(n,m)=s(n-1,m-1)+(n-1)s(n-1,m)\),边界\(s(0,0)=1\)。
性质
\[\begin{aligned}
&\sum_{i=0}^ns(n,i)=n!\\
&\sum_{i=0}^ns(n,i)(-1)^i=0(n\ge2)\\
&\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)\\
\]
其中
\[\begin{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}^n\frac{i!}{j!\times (i-j)!}n^{i-j}x^j\\
&=\sum_{j=0}^n\frac{x^j}{j!}\sum_{i=0}^ns(n,i)\times i!\times\frac{n^{i-j}}{(i-j)!}
\end{aligned}
\]
于是快速地从\(G_n(x)\)得到\(G_n(x+n)\)。(参考附录)
因此采取分治策略计算\(G_n(x)\),复杂度与多项式求逆相近,为\(O(n\log n)\)。
第二类斯特林数
定义
子集斯特林数\(S(n,m)=\begin{Bmatrix}n\\m\end{Bmatrix}\)表示将n个元素分成m个组的方案数。
递推式 \(S(n,m)=S(n-1,m-1)+mS(n-1,m)\),边界\(S(0,0)=1\)。
性质
\[\begin{aligned}
&\sum_{i=0}^mS(n,i)\times i!\times 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}^m\frac{(n+1)^{\underline{i+1}}S(m,i)}{i+1}
\end{aligned}
\]
前两点自行脑补,下面用前两点推导第三点
\[\sum_{i=0}^ni^m
=\sum_{i=0}^n\sum_{j=0}^iS(m,j)\times j!\times C(i,j)
=\sum_{i=0}^n\sum_{j=0}^mS(m,j)\times j!\times C(i,j)\\
=\sum_{j=0}^mS(m,j)\times j!\sum_{i=0}^nC(i,j)
=\sum_{j=0}^mS(m,j)\times j!\times C(n+1,j+1)\\
=\sum_{j=0}^m\frac{S(m,j)\times j!\times (n+1)!}{(j+1)!\times (n-j)!}
=\sum_{i=0}^m\frac{(n+1)^{\underline{i+1}}S(m,i)}{i+1}
\]
母函数
设它的母函数为\(G_n(x)\),易知
\[\begin{aligned}
G_n(x)&=\sum_i S(n,i)x^i\\
&=\sum_i\frac{1}{i!}\sum_{j=0}^i(-1)^jC(i,j)(i-j)^nx^i\\
&=\sum_i\sum_j\frac{(-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)
\]
推导
结合幂、阶乘幂的变换
\[\begin{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)\times j!\times C(m,j)\\
&=\sum_{i=0}^ns(n,i)(-1)^{n-i}\sum_{j=0}^m S(i,j)\times m^\underline j\\
&=\sum_{i=0}^ns(n,i)(-1)^{n-i}\sum_{j=0}^n S(i,j)\times m^\underline j\\
&=\sum_{j=0}^nm^\underline j\sum_{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]
\]
于是先证从左到右
\[\begin{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\),则
\[\begin{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 - 求第一类斯特林数 题解