Skip to content
0

第二类斯特林数·行 笔记

Link

理论知识

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

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

定理 1

S(n,m)=S(n1,m1)+m×S(n1,m)

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

定理 2

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

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

实现

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

f(i)=ing(i)=S(n,i)×i!

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

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

最近更新