定义
第二类斯特林数 S ( n , m ) S(n,m) S(n,m) 表示将 n n n 个不同的小球放到 m m m 个相同的盒子里的方案数。 S ( n , m ) S(n,m) S(n,m) 也可以用 { n m } \begin{Bmatrix} n \\ m\end {Bmatrix} { nm} 表示。
公式
递推公式: S ( n , m ) = S ( n − 1 , m − 1 ) + m S ( n − 1 , m ) S(n,m)=S(n-1,m-1)+mS(n-1,m) S(n,m)=S(n−1,m−1)+mS(n−1,m)。即考虑第 n n n 个球是单独新分到一个盒子或者和前面的球装在同个盒子里。如果是单独新分到一个盒子里,那么就是 S ( n − 1 , m − 1 ) S(n-1,m-1) S(n−1,m−1),如果和前面的球装在一起,也就是从 m m m 个盒子里选一个装,即 m S ( n − 1 , m − 1 ) mS(n-1,m-1) mS(n−1,m−1).
容斥原理:
S ( n , m ) = ∑ k = 0 m ( − 1 ) k ( m k ) ( m − k ) n m ! S(n,m)=\frac{\sum_{k=0}^m(-1)^k\binom{m}{k}(m-k)^n}{m!} S(n,m)=m!∑k=0m(−1)k(km)(m−k)n
即枚举空盒的数量 k k k,然后 m m m 个盒子里选出 k k k 个为空,剩下的随便放,因为盒子是相同的,所以要除以盒子数量的阶乘 m ! m! m!。
这个式子可以化为卷积形式:
S ( n , m ) = 1 m ! ∑ k = 0 m ( − 1 ) k ( m − k ) n ( k m ) S ( n , m ) = 1 m ! ∑ k = 0 m ( − 1 ) k ( m − k ) n m ! k ! ( m − k ) ! S ( n , m ) = ∑ k = 0 m ( − 1 ) k ( m − k ) n 1 k ! ( m − k ) ! S ( n , m ) = ∑ k = 0 m ( − 1 ) k k ! ⋅ ( m − k ) n ( m − k ) ! S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k(m-k)^n\binom{k}{m}\\ S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k(m-k)^n\frac{m!}{k!(m-k)!}\\ S(n,m)=\sum_{k=0}^{m}(-1)^k(m-k)^n\frac{1}{k!(m-k)!}\\ S(n,m)=\sum_{k=0}^{m}\frac{(-1)^k}{k!}\cdot\frac{(m-k)^n}{(m-k)!} S(n,m)=m!1k=0∑m(−1)k(m−k)n(mk)S(n,m)=m!1k=0∑m(−1)k(m−k)nk!(m−k)!m!S(n,m)=k=0∑m(−1)k(m−k)nk!(m−k)!1S(n,m)=k=0∑mk!(−1)k⋅(m−k)!(m−k)n
令 A ( x ) = ( − 1 ) k k ! , B ( x ) = m n m ! A(x)=\frac{(-1)^k}{k!},B(x)=\frac{m^n}{m!} A(x)=k!(−1)k,B(x)=m!mn,则 S ( n , m ) = ∑ k = 0 m A ( k ) B ( m − k ) S(n,m)=\sum_{k=0}^mA(k)B(m-k) S(n,m)=∑k=0mA(k)B(m−k)。是经典的卷积形式,可以用 F F T / N T T FFT/NTT FFT/NTT 在 O(nlogn) \text{O(nlogn)} O(nlogn) 的时间内解决。
具有组合意义的等式:
∑ k = 0 m { m k } n k ‾ = n m \sum_{k=0}^m\begin{Bmatrix}m\\k\end{Bmatrix}n^{\underline k}=n^m k=0∑m{ mk}nk=nm
也就是 ∑ k = 0 m ( n k ) { m k } k ! = n m \sum_{k=0}^{m}\binom{n}{k}\begin{Bmatrix}m\\k\end{Bmatrix}k!=n^m ∑k=0m(kn){ mk}k!=nm。
其中 n k ‾ n^{\underline k} nk 表示 n n n 的 k k k 次下降幂,即 n ( n − 1 ) ⋯ ( n − k + 1 ) n(n-1)\cdots(n-k+1) n(n−1)⋯(n−k+1)。
右边就是 m m m 个球任意放到 n n n 个盒子里的方案数,左边就是枚举非空盒子的数量 k k k,选出这 k k k 个非空盒子, m m m 个球分到 k k k 个盒子里,盒子可以调换顺序(算不同方案) k ! k! k!。