[省选前题目整理][HDU 2512]一卡通大冒险(第二类斯特林数+贝尔数)
2015-04-10 08:50
274 查看
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2512思路
第一类斯特林数s2[i][j]=s_2[i][j]=将jj个互不相同的物品划分成jj个非空集合的方案数。s2[i][j]=s2[i−1][j−1]+js2[i−1][j]s_2[i][j]=s_2[i-1][j-1]+js_2[i-1][j]
递推式的解释:对于第ii个物品有两种情况:
1、前i−1i-1个物品已经划分成了j−1j-1个非空集合,第ii个物品单独构成第jj个集合。
2、前i−1i-1个物品已经划分成了jj个非空集合,第ii个物品可以选择放入jj个集合当中之一,共jj个方案,因此是js2[i−1][j]js_2[i-1][j]。
贝尔数bell[i]=ibell[i]=i个互不相同的物品,划分成若干个非空集合的方案数。
bell[i]=∑k=0is2[i][k]bell[i]=\sum_{k=0}^{i}s_2[i][k]
这个式子非常显然,即枚举划分成kk个非空集合,对s2[i][k]s_2[i][k]求和即可得到贝尔数。
代码
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> #define MAXN 2200 #define MOD 1000 using namespace std; int s2[MAXN][MAXN],bell[MAXN]; void GetSecondStirling() //求第二类Stirling数 { s2[1][1]=1; for(int i=2;i<MAXN;i++) { s2[i][i]=1; s2[i][1]=1; for(int j=2;j<i;j++) s2[i][j]=(s2[i-1][j-1]+s2[i-1][j]*j)%MOD; } } void GetBell() //求贝尔数 { for(int i=1;i<MAXN;i++) { bell[i]=0; for(int j=0;j<=i;j++) bell[i]=(bell[i]+s2[i][j])%MOD; } } int main() { int n,T; GetSecondStirling(); GetBell(); scanf("%d",&T); while(T--) { scanf("%d",&n); printf("%d\n",bell ); } return 0; }
相关文章推荐
- [省选前题目整理][HDU 1028]Ignatius and the Princess III(生成函数)
- HDU 2512 一卡通大冒险(第二类 stirling 数)
- [省选前题目整理][HDU 4609]3-idiots(FFT+生成函数)
- [省选前题目整理][HDU 1521]排列组合(生成函数)
- [省选前题目整理][BZOJ 1189][HNOI 2007]紧急疏散(BFS+二分+最大流)
- [省选前题目整理][BZOJ 1927][SDOI 2010]星际竞速(费用流)
- [省选前题目整理][BZOJ 1013]球形空间产生器sphere(高斯消元)
- [省选前题目整理][POJ 1830]开关问题(XOR方程组高斯消元)
- [省选前衡八题目整理][BZOJ 1503]郁闷的出纳员(Splay)
- [省选前题目整理][BZOJ 1565][NOI 2009]植物大战僵尸(最小割+最大权闭合子图建模)
- [省选前题目整理][BZOJ 3140][HNOI 2013]消毒(二分图最大匹配)
- [省选前衡八题目整理][BZOJ 3223]文艺平衡树(Splay)
- [省选前题目整理][POJ 2942]Knights of the Round Table(Tarjan求点双联通分量+DFS对环染色)
- [省选前题目整理][POJ 2069]Super Star(爬山搜索)
- [省选前题目整理][BZOJ 2730][HNOI 2012]矿场搭建(Tarjan求割点+计数问题)
- [省选前题目整理][BZOJ 2324][ZJOI 2011]营救皮卡丘(费用流)
- [省选前题目整理][BZOJ 2594]管道局长数据加强版(LCT)
- HDOJ 题目2512 一卡通大冒险(斯特林第二类数)
- [省选前题目整理][BZOJ 1009][HNOI 2008]GT考试(KMP+DP+矩阵快速幂)
- [省选前题目整理][POJ 2699]The Maximum Number of Strong Kings(暴力枚举+最大流)