首页 > 快速求斯特林数总结(洛谷模板题解)

快速求斯特林数总结(洛谷模板题解)

题目链接

第一类斯特林数·行

第一类斯特林数·列

第二类斯特林数·行

第二类斯特林数·列

求一行第一类斯特林数

由第一类斯特林数的推论,(x^{overline{n}}=sum_iegin{bmatrix}n\iend{bmatrix}x^i),分治FFT计算上升幂即可 (O(nlog^2n))

求一列第一类斯特林数

由第一类斯特林数的定义,(egin{bmatrix}n\mend{bmatrix}) 是把 (N) 个不同的球划分成 (m) 个无区别的圆排列的方案数。

而把 (N) 个球排成圆排列的方案数的EGF为 (F(x)=sum_{i=1}^infty frac{(i-1)!}{i!}x^i),那么答案的EGF则为 (frac{F^m(x)}{m!}),多项式快速幂即可。

求一行第二类斯特林数

考虑有 (n) 个球,染成 (c) 种不同颜色的方案数。

[c ^ n = sum_{i = 0} ^ c {cchoose i} * egin{Bmatrix} n \i end{Bmatrix} * i!]

二项式反演得

[egin{Bmatrix} n \m end{Bmatrix} * m! = sum_{i = 0} ^ m (-1)^{m-i} * {mchoose i} * i^n ]

卷积即可 (O(nlogn))

求一列第二类斯特林数

由第二类斯特林数的定义,(egin{Bmatrix}n\mend{Bmatrix}) 是把 (N) 个不同的球划分成 (m) 个无区别的非空集合的方案数。

而把 (N) 个球组成非空集合的方案数的EGF为 (F(x)=sum_{i=1}^infty frac{x^i}{i!}=e^x-1),那么答案的EGF则为 (frac{F^m(x)}{m!}),多项式快速幂即可。

求一排贝尔数

由贝尔数的定义,(Bell(n)) 表示 (n) 个不同的球划分成若干个非空集合的方案数。

而把 (N) 个球组成非空集合的方案数的EGF为 (F(x)=sum_{i=1}^infty frac{x^i}{i!}=e^x-1),根据集合与划分的关系,那么答案的EGF则为 (e^{e^x-1}),多项式 Exp 即可。

转载于:https://www.cnblogs.com/bestwyj/p/11178659.html

更多相关:

  • BZOJ3930: [CQOI2015]选数 Description  我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。 小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。 然而他很快发现工作量太大了,于是向你寻求帮助。 你的任务很简...

  • 看到网上有一些教程,他们的代码截图,不是VS默认的白底黑字,觉得挺好看,就也把自己的VS鼓捣了一把: 使用的是现成的配色方案,试了好几种,就觉得这个看着舒服son-of-obsidian.vssettings 你可以去Studiostyles下载更多的配色方案。 下载好的配色方案,是vssettings格式的。 导入到VS步骤:  ...

  • 为什么80%的码农都做不了架构师?>>>    在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案。由于时间有限,本文不会深入。 笔者遇到的问题是Js调用WebAPI中的数据进行跨域的场景。涉及若干跨域方案: 方案1:jsonp+回调 方案2:Microsoft.AspNet.WebA...

  • C语言 char * removeOuterParentheses(char * S){int len = strlen(S);int j = 0;int sum = 0;for(int i = 0; i < len; i++){if (S[i] == '('){sum += 1;}else if (S[i] == ')'){sum...

  • Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要(sumlimits_{i=1}^n a_i)与(sumlimits_{n+1}^{2n}a_i)差值最大,排一下序就好了 CF1174B Ehab Is an Odd...

  • 浮点型乘整型和整型乘浮点型结果不同,不知为什么。 1 double sum = 0.0; 2 for (int i = 0; i < n; i++) 3 { 4 cin >> a[i]; 5 sum += a[i] * (i + 1) * (n - i); 6 } 7 printf("%.2f", sum); 提...