CodeForces 543A - Writing Code DP 完全背包
有n个程序,这n个程序运作产生m行代码,但是每个程序产生的BUG总和不能超过b,
给出每个程序产生的代码,每行会产生ai个BUG,问在总BUG不超过b的情况下,
我们有几种选择方法思路:看懂了题意之后就是一个完全背包题了
定义dp[ i ][ j ][ k ] 表示前 i 个程序员,已经写了 j 行代码,
已经产生了 k 个 bugs 。
根据题意,得知第 i 个程序员会写 r 行代码,那么相当于
dp[ i ][ j ][ k ] += dp[i - 1][j - r][k - ra[ i ]]
Source Code:
/*************************************************************************
> File Name: code03.cpp
> Author: Jeremy Wu
> Created Time: Sun 31 May 2015 02:37:07 PM CST
************************************************************************/ #include <iostream> using namespace std; const int N = ;
int a[N];
int dp[][N][N]; int main () {
int i, j, k, l, m, n, bl, bugs, md; cin >> n >> bl >> bugs >> md;
for (i = ; i < n; ++i) cin >> a[i];
dp[][][] = ; for (int it = ; it <= n; ++it) {
i = it & ;
for (j = ; j <= bl; ++j) {
for (k = ; k <= bugs; ++k) {
dp[i][j][k] = dp[i ^ ][j][k];
if (j > && k >= a[it - ]) {
dp[i][j][k] += dp[i][j - ][k - a[it - ]];
}
while (dp[i][j][k] >= md) {
dp[i][j][k] -= md;
}
}
}
} int ans = ;
for (i = ; i <= bugs; ++i) {
ans += dp[n & ][bl][i];
while (ans >= md) {
ans -= md;
}
}
cout << ans << endl; return ;
}
CodeForces 543A - Writing Code DP 完全背包的更多相关文章
- CodeForces 544C (Writing Code)(dp,完全背包)
题意:有n个程序员,要协作写完m行代码,最多出现b个bug,第i个程序员每写一行代码就会产生a[i]个bug,现在问,这n个人合作来写完这m行代码,有几种方案使得出的bug总数不超过b(题中要求总方案 ...
- Codeforces 543A Writing Code
http://codeforces.com/problemset/problem/543/A 题目大意:n个人,一共要写m行程序,每个程序员每行出现的bug数为ai,要求整个程序出现的bug数不超过b ...
- Codeforces Round #302 (Div. 2).C. Writing Code (dp)
C. Writing Code time limit per test 3 seconds memory limit per test 256 megabytes input standard inp ...
- 背包DP || Codeforces 544C Writing Code
程序员写bug的故事23333 题意:n个程序员,一共写m行程序,最多产生b个bug,问方案数 思路:f[i][j]表示写了i行,产生了j个bug的方案数,因为每个人都是可以独立的,所以i循环到n都做 ...
- Code Forces 543A Writing Code
题目描述 Programmers working on a large project have just received a task to write exactly mm lines of c ...
- 543A - Writing Code(二维动态规划)
题意:现在要写m行代码,总共有n个文件,现在给出第i个文件每行会出现v[i]个bug,问你在bug少于b的条件下有多少种安排 分析:定义dp[i][j][k],i个文件,用了j行代码,有k个bug 状 ...
- Codeforces 1197E Culture Code DP
题意:你有n个俄罗斯套娃,已知每个套娃的容积和体积,问有多少个子集满足以下条件: 1:这个子集是一个极大子集,即不能再添加其它的套娃到这个子集里. 2:子集的套娃之间的间隙和最小. 思路1:线段树优化 ...
- 完全背包 Codeforces Round #302 (Div. 2) C Writing Code
题目传送门 /* 题意:n个程序员,每个人每行写a[i]个bug,现在写m行,最多出现b个bug,问可能的方案有几个 完全背包:dp[i][j][k] 表示i个人,j行,k个bug dp[0][0][ ...
- Codeforces Round #302 (Div. 2) C. Writing Code 简单dp
C. Writing Code Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544/prob ...
随机推荐
- PHP的排列组合问题 分别从每一个集合中取出一个元素进行组合,问有多少种组合?
首先说明这是一个数学的排列组合问题C(m,n) = m!/(n!*(m-n)!) 比如:有集合('粉色','红色','蓝色','黑色'),('38码','39码','40码'),('大号','中号') ...
- Cubieboard 关闭板载led
修改script.bin 找到最后节点[led_para] 修改leds_used = 0 script.bin 一般在系统盘的第一个分区 例如nand就在/dev/nanda sdcard就在/d ...
- IPv6地址的ping、telnet等操作
最近在研究https协议是如何传输数据的,用wireshark抓包分析,发现客户机和google网站在传输数据时使用了IPv6地址,于是相对ipv6地址测试下基本的功能. ping功能,直接使用pin ...
- C++模板:读入优化
int scan(int &x){ while(c=getchar(),c<'0'||c>'9');x=c-'0'; while(c=getchar(),c>='0'& ...
- I can do it!(贪心)
I can do it! Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- mysql待整理
1. MYSQL SQL_NO_CACHE的真正含义 http://www.dewen.org/q/5149/Mysql 是 结果不缓存,但查询还是缓存了. 如果要重新测试,就在查询前先执行一下&qu ...
- Android Studio导出Jar包
这篇博客将介绍一下如何用Android Studio导出jar包,希望能给大家带来帮助. 首先需要修改build.gradle文件,在Android Studio中会显示多个build.gradle文 ...
- jquery日历签到控件的实现
calendar.js var calUtil = { //当前日历显示的年份 showYear:2015, //当前日历显示的月份 showMonth:1, //当前日历显示的天数 showDays ...
- Subsets 【dfs】
Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...
- Zookper
http://blog.csdn.net/yangbutao/article/details/11669609 http://www.oschina.net/code/snippet_255033_2 ...