专栏文章

已完成嘟嘟嘟大学习

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min4t0z4
此快照首次捕获于
2025/12/01 20:34
3 个月前
此快照最后确认于
2025/12/01 20:34
3 个月前
查看原文
斯特林数计算

总之我们可以理解斯特林数为nn人分kk组的方案。
考虑容斥,我们钦定至少有mm个组为 11,有:
ans=m=0n(1)m(nm)k0Snm,k=m=0n(1)nm(nm)k0Sm,kans=\sum_{m=0}^n (-1)^m \binom{n}{m} \sum_{k \ge 0}S_{n-m,k}\\ = \sum_{m=0}^n (-1)^{n-m} \binom{n}{m} \sum_{k \ge 0}S_{m,k}
后面的sum等于其他任选的方案。
同时,上下两个式子显然是对称的。
根据oi wiki,我们可以知道其有通项公式Sn,m=i=0m(1)miini!(mi)!S_{n,m}=\sum_{i=0}^m \frac{(-1)^{m-i}i^n}{i!(m-i)!},那么整个式子变为了:
m=0n(1)nm(nm)k0i=0k(1)kiimi!(ki!)=m=0n(1)nm(nm)k01ki=0kk!(1)kiimi!(ki)!=m=0n(1)nm(nm)k01ki=0kk!(1)kiimi!(ki)!=m=0n(1)nm(nm)k01ki=0k(ki)(1)kiim交换求和顺序=k01ki=0k(ki)(1)kim=0n(1)nm(nm)im\sum_{m=0}^n (-1)^{n-m} \binom{n}{m} \sum_{k \ge 0}\sum_{i=0}^k \frac{(-1)^{k-i}i^m}{i!(k-i!)}\\ =\sum_{m=0}^n (-1)^{n-m} \binom{n}{m} \sum_{k \ge 0}\frac{1}{k}\sum_{i=0}^k \frac{k!(-1)^{k-i}i^m}{i!(k-i)!}\\ =\sum_{m=0}^n (-1)^{n-m} \binom{n}{m} \sum_{k \ge 0}\frac{1}{k}\sum_{i=0}^k \frac{k!(-1)^{k-i}i^m}{i!(k-i)!}\\ =\sum_{m=0}^n (-1)^{n-m} \binom{n}{m} \sum_{k \ge 0}\frac{1}{k}\sum_{i=0}^k \binom{k}{i}(-1)^{k-i}i^m\\ \text{交换求和顺序}\\ = \sum_{k \ge 0}\frac{1}{k}\sum_{i=0}^k \binom{k}{i}(-1)^{k-i}\sum_{m=0}^n (-1)^{n-m} \binom{n}{m} i^m
此时,最后那一坨看起来很容斥原理,思考其组合意义,可以发现其相当于钦定i个为1,其他在1j1-j选的方案,可以转为(i1)n(i-1)^n
k01ki=0k(ki)(1)ki(i1)n\sum_{k \ge 0}\frac{1}{k}\sum_{i=0}^k \binom{k}{i}(-1)^{k-i}(i-1)^n
这个式子与iikik-i有关,分别设为 x,yx,y 那么有:
x01(x+y)!y0x+y(x+yx)(1)y(x1)n=x0y0x+y(1)y(x1)nx!y!=x+yn(1)y(x1)nx!y!\sum_{x\ge 0}\frac{1}{(x+y)!}\sum_{y\ge 0}^{x+y}\binom{x+y}{x}(-1)^y(x-1)^n\\ = \sum_{x\ge 0}\sum_{y\ge 0}^{x+y}\frac{(-1)^y(x-1)^n}{x!y!}\\ =\sum_{x+y\le n}\frac{(-1)^y(x-1)^n}{x!y!}
其余几项好解决,我们如何线性预处理xnx^n呢?
实际上很简单,我们用欧拉筛维护就行了,很容易O(n)。

评论

0 条评论,欢迎与作者交流。

正在加载评论...