hdu-4045 Machine scheduling
来源:互联网 发布:uefitool for mac 编辑:程序博客网 时间:2024/04/30 01:45
http://acm.hdu.edu.cn/showproblem.php?pid=4045
/************************************************************************************************************************************** 题意:给你n台机器,选出r台,每两台之间相差要大于等于k,然后r台可以分成最多m组** 问有多少种方法。** 题解:首先从n里挑选r台,r台分成最多m组(Stirling第二类) 乘积即是答案;** 个人比较弱 orz ACM_clove大牛:http://blog.csdn.net/acm_cxlove/article/details/7857785** 第一部分:首先每两个机器之前至少有K-1个间隔,那么如果还剩余一些位置,则把这些多余的插入到R个机器中。** 那么剩余位置便是N-((R-1)*K+1),对于R个机器,R+1个位置,** 接下来便是把N-((R-1)*K+1)分为R+1个集合(把r+1个空插入剩余的位置),而且可以为空。** 做法是添加R+1个物品,然后用插板法,这样保证 每一个集合都至少有一个,** 然后再把每一个集合都减掉一个便是结果,最终结果便是C[n-((r-1)*k+1)+r+1-1][r]。应该比较好理解了。。。。。。** 第二部分:将R个元素最多分为M个集合,不为空的方案法。** 对于R个元素分为i个集合结果是第二类斯特林数,然后再统计合计一下就OK了**************************************************************************************************************************************/#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;#define mod 1000000007LL C[2005][2005];LL stirling[2005][2005];void init(){ C[0][0] = 1; for(int i = 1;i <= 2000;i++){ C[i][0] = C[i][i] = 1; for(int j = 1;j < i;j++){ C[i][j] = (C[i-1][j-1] + C[i-1][j]) % mod; } } stirling[0][0] = 1; for(int i = 1;i <= 1000;i++){ stirling[i][i] = 1; for(int j = 1;j < i;j++) stirling[i][j] = (stirling[i-1][j-1] + j * stirling[i-1][j]) % mod; }}int main(){ init(); LL n,r,k,m; while(cin >> n >> r >> k >> m){ if(n - (r-1) * k + 1 < 0) {cout << 0 << endl;continue;} LL sum = 0; for(int i = 1;i <= min(r,m);i++) sum = (sum + stirling[r][i]) % mod; LL ans = C[n - ((r-1) * k + 1) + r + 1 - 1][r] * sum % mod; cout << ans << endl; } return 0;}
0 0
- hdu 4045 Machine scheduling
- hdu-4045 Machine scheduling
- [Stirling] HDU 4045 Machine scheduling
- hdu 4045 Machine scheduling 组合数学
- Hdu 4045 Machine scheduling (组合数,斯特林数)
- hdu 4045 Machine scheduling(组合数学)
- hdu 4045 Machine scheduling 斯特林数+插板法
- Machine scheduling HDU
- hdoj-4045-Machine scheduling
- HDU 4045 Machine scheduling --第二类Strling数
- HDU/HDOJ 4045 BUPT 216 Machine scheduling 2011ACM北京网络赛 F题
- HDU 4045 Machine scheduling(11年北京网赛,组合数,斯特林数)
- HDU 4045 Machine scheduling (组合数学-斯特林数,组合数学-排列组合)
- hdu-4045-Machine scheduling-组合数学(插板+第二类Stirling数)
- HDU_4045 Machine scheduling 数学
- hdu 2474 Process scheduling
- hdu 2474 Process scheduling
- 4045 Machine scheduling(The 36th ACM/ICPC Asia Regional Beijing Site —— Online Contest)
- 【cocos2dx 3.3】口袋空战4 游戏主场景
- Linux(CentOS)下,下载安装Nginx并配置
- 技术泡妹子一 : SVG识别妹子身体各个部位
- javaweb登陆,注销功能实现的一般步奏
- 在ECSHOP商品列表页显示每个商品的品牌
- hdu-4045 Machine scheduling
- 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统
- $*和¥$@
- JS的event对象
- //2.11练习.练习6(2).p37
- 黑马程序员 java学习笔记 Day8:正则表达式
- 关于ztree的一点感悟
- python3 爬虫(爬取网页、图片基础)
- Android TouchEvent事件传递机制