Skip to content

第二类斯特林数·行 笔记 ​

Link。

理论知识 ​

定义 S(n,m) 表示将 n 个有标号物品放进 m 个无标号盒子里的方案数,每个盒子至少有一个。

即:当 n=3,m=2 时,{{1,3},{2}} 与 {{2},{1,3}} 相同,但与 {{1,2},{3}} 不同。

定理 1 ​

S(n,m)=S(n−1,m−1)+m×S(n−1,m)

即要么第 n 个数自己开个盒子,要么放到之前一个有数的盒子。

定理 2 ​

mn=∑i=0mS(n,i)×i!×(ni)

左边是将 n 个有标号物品放进 m 个有标号盒子里的方案数,可以有空盒子。右边是选择 i 个盒子不空,放进有标号盒子的方案数(因为 ×i!),两者等价。

实现 ​

观察到定理 2 右边是个类似二项式反演的形式。

设 f(i)=in,g(i)=S(n,i)×i!。

f(m)=∑x=0mg(x)×(mx)⇒g(m)=∑x=0m(−1)m−x×(mx)×f(x)g(m)=∑x=0m(−1)m−x×m!(m−x)!×xnx!S(n,m)=∑x=0m(−1)m−x(m−x)!×xnx!

令 A(x)=∑i=0n(−1)ii!×xi,B(x)=∑i=0nini!×xi,C(x)=A(x)×B(x),C(m) 的系数即为 S(n,m),使用 NTT 即可。

最近更新