请大家注意:
因为作者写的文章中的梯等式公式总是莫名的显示错误,所以作者的许多文章中的梯等式都暴力拆成一步一个等式了。
造成的不适,请谅解。
同时,如果文章中还有其他错误,请联系作者,谢谢。
问题模型
- 求将个数划分成个圆排列的方案数。
- 求将个数划分成个集合的方案数,集合没有标号。
公式推导——递推
我们
设第一个问题的答案是,
设第二个问题的答案是。
那么不难写出递推式:
公式推导——拓展
求第一类斯特林数的某一行
我们考虑按照递推式推导出它的生成函数。
显然。
之后,我们有:
那么不难得出:,
我们也可以写成,
上面的式子是可以分治的,那么我们就可以求出一行了。
在这里我们介绍一种更优秀的的求一行第一类斯特林数的方法。
我们考虑倍增求出这个函数。
假设我们已经有了,
考虑求出。
我们发现。
如果我们可以快速求出,就赢了。
显然是一个关于的次多项式,
那么我们设,而是我们已经求出来的。
则
注意到式中,第二个是一个减法卷积,那么我们就可以了。
于是,我们就可以倍增出了。
时间复杂度。
第一类斯特林数和阶乘
由第一类斯特林数的定义,显然。
这是由排列与置换和轮换的关系推导出来的。
第一类斯特林数和上升/下降幂
因为第一类斯特林数的生成函数就是,
所以接下来我们考虑下降幂的展开:
于是我们就可以定义出有符号第一类斯特林数。
及。
并且有符号第一类斯特林数的生成函数就是。
第二类斯特林数和自然数的幂
我们考虑的组合意义:有个有标号的盒子,有个有标号的球,每个球随便放的方案数。
因为我们有表示将个有标号的球分成个非空集合的方案数。
那么我们不难写出:
其实就是枚举在个盒子中用了几个,盒子还有标号,所以乘阶乘。
求第二类斯特林数的某一行
我第一眼看到式,觉得好像可以二项式反演?
那么我们设:
于是,式就可以写成:
这显然可以二项式反演:
那么我们其实就已经推出的通项公式了:
这样,我们就可以求出第二类斯特林数的一行了。
两类斯特林数的生成函数
为了表示清晰,我们用
- 表示第一类斯特林数第行的生成函数。
- 表示第二类斯特林数第行的生成函数。
- 表示第一类斯特林数第列的生成函数。
- 表示第二类斯特林数第列的生成函数。
那么通过递推式,我们可以得出:
第一类斯特林数——行:
第二类斯特林数——行:
第二类斯特林数——列:
此时我们可以在用之前的倍增做法将优化至。
第一类斯特林数——列:放弃!!!看题解吧。。。
斯特林反演——反转公式
给出一个显然而且之前也用过的式子:
那么我们将其代入之前的一个式子:
此时我们想到第一类斯特林数的生成函数,有:
对比两侧的系数,而且这个式子对于任意都满足,所以有:
如果我们是用来推导还可以得到另一个式子:
放在一起就是:
斯特林反演——反演公式:
假设我们知道,
求关于的表达式。
我们考虑一个及其显然的式子:
同理,那么我们可以得到这些公式: