定义
S2(n,m)为,将n个有标记小球放入m个无差别盒子(无空盒)中的方案数。
乘上m!就是有差别盒子。
计算
由定义得递推式
S2(i,j)=S2(i−1,j−1)+S2(i−1,j)∗j
这个式子用于O(n^2)计算n,n以内的所有斯特林数
若要求某一个S2(n,m),可推导通项公式
首先无视无空盒条件,放法有
mn
种
然后枚举有k个空盒,可得出多算的有
Ckm∗(m−k)n
这要套个容斥,因为
(m−k)n
并不保证这m-k个盒子中全是有的。
换句话说,设不保证无空盒的放法全集是S,
Ai
表示S中第i个盒子为空的放法子集.
减去
C1m∗(m−1)n
即为 减去
∑Ai
显然我们多减去了
Ai∩Aj
这一类放法. 即有i,j同时为空的放法
因此要加回
Ai∩Aj
,但又多加了
Ai∩Aj∩Ak
,以此类推,理解一下.
故
S2(n,m)=1m!∗∑mk=0Ckm∗(m−k)n∗(−1)k
那个1/m!是将m个盒子变为无差别. (乘上就是有差别咯)
可
O(mlogn)
计算某一个s2.