有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 完全背包的更多相关文章

  1. CodeForces 544C (Writing Code)(dp,完全背包)

    题意:有n个程序员,要协作写完m行代码,最多出现b个bug,第i个程序员每写一行代码就会产生a[i]个bug,现在问,这n个人合作来写完这m行代码,有几种方案使得出的bug总数不超过b(题中要求总方案 ...

  2. Codeforces 543A Writing Code

    http://codeforces.com/problemset/problem/543/A 题目大意:n个人,一共要写m行程序,每个程序员每行出现的bug数为ai,要求整个程序出现的bug数不超过b ...

  3. 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 ...

  4. 背包DP || Codeforces 544C Writing Code

    程序员写bug的故事23333 题意:n个程序员,一共写m行程序,最多产生b个bug,问方案数 思路:f[i][j]表示写了i行,产生了j个bug的方案数,因为每个人都是可以独立的,所以i循环到n都做 ...

  5. Code Forces 543A Writing Code

    题目描述 Programmers working on a large project have just received a task to write exactly mm lines of c ...

  6. 543A - Writing Code(二维动态规划)

    题意:现在要写m行代码,总共有n个文件,现在给出第i个文件每行会出现v[i]个bug,问你在bug少于b的条件下有多少种安排 分析:定义dp[i][j][k],i个文件,用了j行代码,有k个bug 状 ...

  7. Codeforces 1197E Culture Code DP

    题意:你有n个俄罗斯套娃,已知每个套娃的容积和体积,问有多少个子集满足以下条件: 1:这个子集是一个极大子集,即不能再添加其它的套娃到这个子集里. 2:子集的套娃之间的间隙和最小. 思路1:线段树优化 ...

  8. 完全背包 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][ ...

  9. 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 ...

随机推荐

  1. Windows下Python中的中文路径和中文输出问题

    这几天有个项目需要写一点类似于脚本的小程序,就用Python写了,涉及到中文路径和中文输出的问题,整理一下. 有一个问题我觉得需要先强调一下,在写Python程序的时候,一定保证编码是utf-8,然后 ...

  2. Jacob

    http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548331.html http://blog.csdn.net/qingwangyo ...

  3. HDU 3802 Ipad,IPhone

    http://wutyyzchangde.blog.163.com/blog/static/172226566201132311311374/ #include <cstdio> type ...

  4. 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java

    [LeetCode]Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum dept ...

  5. nodejs--express开发博客系统(三)

    上一节已经实现了登录.注册.发表文章和文章读取的功能,今天咱加上评论.文章页面和作者页面. 评论只能在进入文章页面后才能进行,所以咱们先写文章页面. 在上一节的代码中,我已经给文章标题添加了超链接了, ...

  6. JavaScript推断E-mail地址是否合法

    编写自己定义的JavaScript函数checkEmail(),在该函数中首先推断E-mail文本框是否为空,然后在应用正則表達式推断E-mail地址是否合法,假设不合法提示用户 <script ...

  7. Lamd表达式

    1. 普通绑定: public void button1_Click(object sender, EventArgs e) { MessageBox.Show("ok"); } ...

  8. linux: telnet

    问题: telnet: connect to address 192.168.1.103: Connection refused 总结:{ 1. 需要开启telnet服务, /etc/xinetd.d ...

  9. django1.6.x(python3.3)使用pymysql连接mysql

    1.安装 pymysql,地址:https://code.google.com/p/pymysql/ 2.安装django 然后执行 django-admin.py startproject mysi ...

  10. select into from 和 insert into select 的用法和区别(转)

    转自:http://www.studyofnet.com/news/182.html select into from 和 insert into select都是用来复制表,两者的主要区别为: se ...