hdu-4045-Machine scheduling-组合数学(插板+第二类Stirling数)
来源:互联网 发布:阅读笔记网络监管 编辑:程序博客网 时间:2024/06/09 17:23
http://acm.hdu.edu.cn/showproblem.php?pid=4045
题意: n个机器,每天选择r个机器,这任意r个机器编号差>=k,并且将它们分成不到m个相同的组,一共多少方案?
一是 把n机器每天选r个 编号差》k的方案
二是把r个机器分成小于等于m个组的方案
二者乘积就是答案
对于1: 既然要编号差大于等于k,先令每个机器间编号差为k,那么剩下 res=n-k*(n-1)-1个机器没用
接下来把res个机器插到 空隙中,根据插板法,在r个机器的r+1个空隙中插res个机器的方案为 :C(r+res,r)第二种情况就是Stirling(r,m)
注意取模:
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <stack>#include <map>#include <set>#include <vector>#include <sstream>#include <iostream>using namespace std;const long long mod=1000000007;int ss[1005][1005];int cc[2005][2005]; //内存限制为 C(n,k)中的n*kvoid pre(){ int i,j; for (i=0; i<=2000; i++) { cc[i][0]=1; //c(i,0)=1; } for (i=1; i<=2000; i++) { for (j=1; j<=2000; j++) cc[i][j]=(cc[i-1][j-1]+cc[i-1][j])%mod; }}void spre(){ for (int i=1; i<=1000; i++) ss[i][0]=0; for (int i=0; i<=1000; i++) ss[i][i]=1; for (int i=1; i<=1000; i++) { for (int j=1; j<=i-1; j++) { ss[i][j]=(j*(long long )ss[i-1][j]%mod+ss[i-1][j-1])%mod; } }}int main(){ pre(); spre(); int n,k,r,m; while(scanf("%d%d%d%d",&n,&r,&k,&m)!=EOF) { long long res=n-(r-1)*k-1; if (res<0) { printf("0\n");continue; } long long ans=0; for (int i=0; i<=m; i++) ans=(ans+ss[r][i])%mod; ans*=cc[res+r][r]; printf("%lld\n",ans%mod); }}
0 0
- hdu-4045-Machine scheduling-组合数学(插板+第二类Stirling数)
- 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 --第二类Strling数
- HDU 4045 Machine scheduling (组合数学-斯特林数,组合数学-排列组合)
- [组合数学] 第一类,第二类Stirling数,Bell数
- [组合数学] 第一类,第二类Stirling数,Bell数
- 插板法与第二类stirling数的区别
- (组合数学)Stirling 数
- 山东省第五届ACM大学生程序设计竞赛-Hearthstone II(组合数学-第二类Stirling数)
- hdu 4045 第二类Stirling数
- Stirling数-组合数学
- HDU 6143 Killer Names(组合数+第二类Stirling数)
- HDU 6143 Killer Names 组合数+(容斥/第二类Stirling数)
- #HDU4045#Machine scheduling(隔板法的思维:第二类Stirling)
- APP开发实战114-Android Studio打包介绍
- linux下的php环境搭建
- POJ 2503 Babelfish (Trie树)
- 计算机网络——网络层(IP ARP RARP ICMP)
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- hdu-4045-Machine scheduling-组合数学(插板+第二类Stirling数)
- linux权限
- 大话设计模式05----依赖倒转原则 & 里氏代换原则
- APP开发实战115-功能宏的使用
- Linux学习笔记--命令的顺序执行、管道符、通配符、其他特殊符号
- Qt 与SQL SERVER 2008相连接 读取数据库中的信息
- 279. Perfect Squares(难)
- java中equals和==的区别
- 入门题集(持续更新)