斯特林数
第二类斯特林数
第二类斯特林数 \(\begin{Bmatrix} n \\m \end{Bmatrix}\) 表示把 \(n\) 个不同元素划分成 \(m\) 个相同的集合中(不能有空集)的方案数。
求法:
- 
递推式
证明:
考虑第 \(n\) 个元素放在哪个集合。它要么在已经有的 \(k\) 个非空集合里选一个放进去,要么自己单开一个新的集合。
- 
通项公式
证明:
记 \(f_{n,m}=\begin{Bmatrix} n \\m \end{Bmatrix},g_{n,m}\) 表示允许空集的方案数。
显然,\(g_{n,m}=\frac{n^m}{m!}\)。
钦定非空集合个数知:
对其二项式反演可得:
带入 \(g_{n,i}\) 可得:
\(\begin{aligned}\begin{Bmatrix} n \\m \end{Bmatrix}&=f_{n,m}\\&=\sum\limits_{i=1}^m(-1)^{m-i}\binom{m}{i}\frac{m^n}{m!}\\&=\sum\limits_{i=1}^m\frac{(-1)^{m-i}i^n}{i!(m-i)!}\end{aligned}\)
第一类斯特林数
第一类斯特林数 \(\begin{bmatrix} n \\k \end{bmatrix}\) 表示将 \(n\) 个元素排成 \(k\) 个轮换的方案数。也即所有 \(n!\) 个排列中,构成的置换有 \(k\) 个环的排列数。
递推式
证明:
考虑第 \(n\) 个元素放在哪个轮换里。要么在已经有的 \(k\) 个轮换里选一个位置插进去,方案数是 \(n-1\);要么自己单开一个新的轮换。
注意:第一类斯特林数无实用通项公式。
斯特林数的特殊值
- 
第二类
- 
第一类
斯特林数的一些恒等式
证明:
使用组合意义:枚举 \(k\) 表示 \(n+1\) 号节点所在的集合之外剩下了 \(k\) 个节点,这 \(k\) 个节点构成了 \(m\) 个集合。
证明:
把 1 中的式子二项式反演即可。
证明:
\(\begin{aligned}\sum\limits_{k=0}^mk{n+k\brace k}&=\sum\limits_{k=0}^m\left({n+k+1\brace k}-{n+k\brace k-1}\right)\\&={m+n+1\brace m}\end{aligned}\)
同理可得:
证明:
一个有 \(n\) 个元素的排列和一个 \(n\) 个元素的置换一一对应,于是枚举所有置换中的轮换个数,求和即为排列个数 \(n!\)。
斯特林数与上升幂、下降幂
- 
普通幂转下降幂
证明(组合意义):
\(x^n\) 的组合意义是把 \(n\) 个不同的元素放进 \(x\) 个不同的可空集合中。
那么先从 \(x\) 个集合中选 \(k\) 个,然后再把 \(n\) 个元素有序划分为 \(k\) 个部分,每个部分依次放进每个集合,组合意义与 \(x^n\) 相同。
证明(代数):
一个重要的观察:\(x^{\underline{k+1}}=x^{\underline{k}}(x-k)\),\(x\cdot x^{\underline{k}}=x^{\underline{k+1}}+k\cdot x^{\underline{k}}\)。
使用数学归纳法:
\(\begin{aligned}x\cdot x^{n-1}&=x\cdot \sum\limits_{k=0}^{n-1}{n-1\brace k}x^{\underline{k}}\\&=\sum\limits_{k=0}^{n-1}{n-1\brace k}x^{\underline{k+1}}+\sum\limits_{k=0}^{n-1}{n-1\brace k}k\cdot x^{\underline{k}}\\&=\sum\limits_{k=1}^n{n-1\brace k-1}x^{\underline{k}}+\sum\limits_{k=1}^{n-1}{n-1\brace k}k\cdot x^{\underline{k}}\\&=\sum\limits_{k=1}^n\left(k{n-1\brace k}+{n-1\brace k-1}\right)x^{\underline{k}}\\&=\sum\limits_{k=1}^n{n\brace k}x^{\underline{k}}\end{aligned}\)
故得证。
- 
上升幂转普通幂
证明:
同样使用数学归纳法即可。
注意此时的观察为 \((x+n-1)x^k=x^{k+1}+(n-1)x^k\)。
- 
下降幂转普通幂
证明:
观察可知,上升和下降幂有交错的符号,如:
则根据上升幂转普通幂公式可得,原式成立。
- 
普通幂转上升幂
证明:
在 \(x^n=\sum\limits_{k=0}^n{n\brace k}x^{\underline{k}}\) 中两边带入 \(-x\),得:
同时:
故得证。
- 
反转公式
证明:
普通幂转下降幂,再下降幂转普通幂,得到:
\(\begin{aligned}x^n&=\sum\limits_{k=0}^n{n\brace k}x^{\underline{k}}\\&=\sum\limits_{k=0}^n{n\brace k}\sum\limits_{j=0}^k(-1)^{k-j}{k\brack j}x^j\\&=\sum\limits_{j=0}^n\sum\limits_{k=j}^n{n\brace k}(-1)^{k-j}{k\brack j}x^j\end{aligned}\)
对比两侧多项式的系数,即可得到原式。
类似地,下降幂转普通幂,再普通幂转下降幂,可以得到:
斯特林反演
这里证明第一个式子,与二项式反演相似:
\(\begin{aligned}f(n)&=\sum\limits_{k=0}^n{n\brace k}\sum\limits_{j=0}^k(-1)^{k-j}{k\brack j}f(j)\\&=\sum\limits_{j=0}^nf(j)\sum\limits_{k=j}^n{n\brace k}{k\brack j}(-1)^{k-j}\\&=\sum\limits_{j=0}^nf(j)[j=n]=f(n)\end{aligned}\)
故得证。
斯特林数例题
- 
Team Work
给定 \(n,k\),求:\(\sum\limits_{i=1}^n\binom{n}{i}i^k\)。
sol:
\(\begin{aligned}\sum\limits_{i=1}^n\binom{n}{i}i^k&=\sum\limits_{i=0}^n\binom{n}{i}\sum\limits_{j=1}^k{k\brace j}i^{\underline{j}}\\&=\sum\limits_{j=1}^k{k\brace j}j!\sum\limits_{i=0}^n\binom{n}{i}\binom{i}{j}\\&=\sum\limits_{j=1}^k{k\brace j}j!\binom{n}{j}\sum\limits_{i=0}^n\binom{n-j}{i-j}\\&=\sum\limits_{j=1}^k{k\brace j}j!\binom{n}{j}\sum\limits_{i=0}^{n-j}\binom{n-j}{i}\\&=\sum\limits_{j=1}^k{k\brace j}\binom{n}{j}2^{n-j}j!\end{aligned}\)
预处理斯特林数,即可 \(O(k^2)\) 计算。
- 
组合数问题
给定多项式 \(f(k)=a_0+a_1k+a_2k^2+\cdots+a_mk^m\) 以及 \(n,x,p\),求:
sol:
首先把 \(f(k)\) 转下降幂多项式 \(f(k)=b_0+b_1k^{\underline{1}}+\cdots+b_mk^{\underline{m}}\):
则取 \(b_i=\sum\limits_{j=i}^m\begin{Bmatrix}j\\i\end{Bmatrix}a_j\) 即可。
则原式化为:
观察到:
带入原式得到:
\(\begin{aligned}\sum\limits_{k=0}^n\sum\limits_{i=0}^mb_ik^{\underline{i}}x^k\binom{n}{k}&=\sum\limits_{k=0}^n\sum\limits_{i=0}^mb_ix^kn^{\underline{i}}\binom{n-i}{k-i}\\&=\sum\limits_{i=0}^mb_in^{\underline{i}}\sum\limits_{k=0}^n\binom{n-i}{k-i}x^k\\&=\sum\limits_{i=0}^mb_in^{\underline{i}}x^i\sum\limits_{k=0}^{n-i}\binom{n-i}{k}x^k\\&=\sum\limits_{i=0}^mb_in^{\underline{i}}x^i(x+1)^{n-i}\end{aligned}\)
即可 \(O(m^2)\) 计算。
- 
Crash 的文明世界
给定一棵 \(n\) 个点的树,以及一个常数 \(k\),对每个 \(i=1,2,\cdots,n\),求:
sol:
利用普通幂转下降幂,原式即为:
\(\begin{aligned}S(u)&=\sum\limits_{v=1}^n\sum\limits_{i=0}^k{k\brace i}\binom{\operatorname{dist}(u,v)}{i}i!\\&=\sum\limits_{i=0}^k{k\brace i}i!\sum\limits_{v=1}^n\binom{\operatorname{dist}(u,v)}{i}\end{aligned}\)
考虑使用树形 dp,设 \(f_{u,i}\) 表示 \(u\) 子树内所有点 \(v\) 的 \(\binom{\operatorname{dist}(u,v)}{i}\) 之和。
转移方程:
\(\begin{aligned}f_{u,i}&=\sum\limits_{v\in \operatorname{sub}(u)}\binom{\operatorname{dist}(u,v)}{i}\\&=\sum\limits_{v\in \operatorname{sub}(u)}\left(\binom{\operatorname{dist}(u,v)-1}{i-1}+\binom{\operatorname{dist}(u,v)-1}{i}\right)\\&=\sum\limits_{v\in \operatorname{sub}(u)}f_{v,i-1}+f_{v,i}\end{aligned}\)
做换根 dp 即可得到每个点的答案。
- 
幼儿园篮球题
给定 \(L\),\(T\) 次询问,每次给 \(n,m,k\),求 \(\sum\limits_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}i^L\)。
sol:
因为 \(x^L=\sum\limits_{i=0}^x\binom{x}{i}i!\begin{Bmatrix} L \\j \end{Bmatrix}\)。
所以:
\(\begin{aligned}\sum\limits_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}i^L&=\sum\limits_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}\sum\limits_{j=0}^i\binom{i}{j}j!\begin{Bmatrix} L \\j \end{Bmatrix}\\&=\sum\limits_{j=0}^k\sum\limits_{i=j}^k\binom{m}{i}\binom{n-m}{k-i}\binom{i}{j}j!\begin{Bmatrix} L \\j \end{Bmatrix}\\&=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\sum\limits_{i=j}^k\binom{m}{i}\binom{n-m}{k-i}\binom{i}{j}\\&=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\binom{m}{j}\sum\limits_{i=j}^k\binom{m-j}{i-j}\binom{n-m}{k-i}\\&=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\binom{m}{j}\sum\limits_{i=0}^{k-j}\binom{m-j}{k-i-j}\binom{n-m}{i}\end{aligned}\)
发现可以使用范德蒙德卷积,化简得:
求出一行第二类斯特林数,即可 \(O(L)\) 计算。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号