这个东西非常有名,大家应该了解过一点,但是它的具体应用也有很多。
第一类斯特林数
对于$s_u(n,m)$,它表示$n$个不同元素构成$m$个圆排列的方案数。
递推公式:$s_u(n,m)=s_u(n-1,m-1)+(n-1)s_u(n-1,m)$
这个递推公式的意义很明显,就是讨论第$n$个元素是自己作为一个圆排列还是前面插到任意一个数的后面。
这个东西的应用比较少,我们还是看第二类。
第二类斯特林数
对于$S(n,m)$,它表示$n$个不同元素构成$m$个非空集合的方案数。
递推公式:$S(n,m)=S(n-1,m-1)+mS(n-1,m)$(这个跟第一类的差不多)
通项公式:$$S(n,m)=\frac{1}{m!}\sum_{k=0}^m(-1)^kC_{m}^k(m-k)^n$$
我们发现这个东西就是一个卷积,所以我们可以在$O(n\log n)$的复杂度内求出$S(n,0),S(n,1),\ldots,S(n,n)$
这个就不讲了,后面的题目直接用递推公式就可以了。
$$x^k=\sum_{i=0}^ki!S(k,i)C_{x}^i$$
这个东西我们可以通过组合意义来证明。
左边是$x$个不同元素放进$k$个不同集合的方案数(可以是空集),右边是枚举非空集合$i$个,首先选$i$个集合,然后排列,然后再将元素放进去。
这个式子的应用非常多。
[GDOI2019] 滑稽子图(还没写)