[toj4087]m个不同的箱子放n种不同的球
来源:互联网 发布:java电商架构 编辑:程序博客网 时间:2024/04/30 17:39
首先有个三角关系:
1
1 1
1 3 1
1 7 5 1
1 15 17 7 1
..
递推为f[i][j] = j*f[i-1][j] + f[i-1][j-1]
上述是第二类斯特灵数的地推关系
第二类斯特灵数描述的问题类似于:m个相同的箱子放n种不同的球,那么分法如上述.
如果箱子不同,那么先对箱子排列,所以答案为ans(n,m) = m! * f[n][m]
而本题就是求C(m,1) * 1! * f[n][1] + C(m,2) * 2! * f[n][2] + ... + C(m, m-1) * (m-1)! * f[n][m-1]
数据不大,但我还是预处理了,组合数(杨辉三角的方法)(C[][]数组, C[i][j]表示从i个中选j个), 阶乘(G[]数组, G[i]表示i的阶乘), 和f[i][j](dp[][]数组,如上,dp[i][j]表示i个箱子放j种球)这三部分:
#include <cstdio>#include <cstring>typedef long long ll;const int MAXN = 505;const int MAXM = 11;const ll MOD = 200000007;ll dp[MAXN][MAXN];ll G[MAXN];ll C[MAXN][MAXN];ll ans[MAXN][MAXM];void init(void) {for (int i = 1; i < MAXN; ++i) {dp[i][1] = 1;dp[i][i] = 1;for (int j = 2; j < i; ++j) {dp[i][j] = (dp[i-1][j]*j + dp[i-1][j-1]) % MOD;}}G[0] = 1;for (int i = 1; i < MAXN; ++i) {G[i] = G[i-1]*i % MOD;}memset(C, 0, sizeof(C));for (int i = 1; i < MAXN; ++i) {C[i][1] = i;for (int j = 2; j <= i; ++j) {C[i][j] = C[i-1][j] + C[i-1][j-1];C[i][j] %= MOD;}}for (int m = 1; m < MAXM; ++m) {for (int n = 1; n < MAXN; ++n) {ans[n][m] = 0;for (int i = 1; i < m; ++i) {ans[n][m] += C[m][i] * G[i] * dp[n][i];ans[n][m] %= MOD;}}}}int main() {init();int T, n, m;static int cas = 1;scanf(" %d", &T);while (T--) {scanf(" %d %d", &n, &m);printf("Case %d: %lld\n", cas++, ans[n][m]);}return 0;}
0 0
- [toj4087]m个不同的箱子放n种不同的球
- [toj4087]m个不同的箱子放n种不同的球
- 将n个相同小球放入m个不同盒子内的放法种数
- POJ 1664 求m个苹果放入n个盘子的不同放法数目 递归 分类讨论
- 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
- 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
- N个鸡蛋放M个篮子,每个篮子不空,保证提不同组合的篮子能取出1至N个鸡蛋
- n个球m个不同的桶每个桶容量有限,求所有放置方法。
- 从 n 个数字中选出 m 个不同的数字,保证这 m 个数字是等概率的
- 从M个不同字符中任取N个字符的所有组合
- //组合问题(从M个不同字符中任取N个字符的所有组合)
- 组合问题(从M个不同字符中任取N个字符的所有组合)
- 组合问题(从M个不同字符中任取N个字符的所有组合)
- 组合问题(从M个不同字符中任取N个字符的所有组合)
- 从M个不同的整数中,选择N个出来排列
- OJ 系列之从M个不同字符中任取N个字符的所有组合
- Java中从m个数中随机选取n个不同的数(m>=n),并进行排序
- 生成k个不同的随机数,从m到n,并输出最大值的程序代码
- java Date获取 年月日时分秒
- linux上安装库注意事项
- Trie树学习
- 分割问题小结
- android API 积累之 可以判断是否是view 是否是 Imageview 的实例
- [toj4087]m个不同的箱子放n种不同的球
- [iOS diary]iOS6样式兼容之 NavigationBar和TabBar 样式扁平化 兼容iOS7样式 全局实现
- CppCMS 1.0.4 发布,高性能 C++ 的Web框架
- POJ 1258 Agri-Net 最小生成树 Prim算法
- 中国象棋之将帅问题
- 有时候,html转义会让你头疼
- 用ElasticSearch和mongodb River搭建一个简单地search工程。
- C语言中的无符号数和有符号数
- GIT 2.0.4服务器搭建以及如何使用