HDU 2602Bone Collector 01背包问题
题意:给出一个t代表有t组数据,然后给出n,n代表有n种石头,v代表旅行者的背包容量,然后给出n种石头的价值和容量大小,求能带走的最大价值
思路:01背包问题,每种石头只有拿与不拿两种状态、(其实我是为理解dp而来的)
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
const int qq=+; //开始数值写小了 只写了100+10
int value[qq];
int weight[qq];
int dp[qq][qq];
void kill(int n,int v)
{
for(int i=;i<=n;++i)
dp[][i]=dp[i][]=;
for(int j,i=;i<=n;++i)
for(j=;j<=v;++j)
if(j<weight[i])
dp[i][j]=dp[i-][j];
else if(dp[i-][j-weight[i]]+value[i]>dp[i-][j])
dp[i][j]=dp[i-][j-weight[i]]+value[i];
else
dp[i][j]=dp[i-][j];
}
int main()
{
int t,n,v;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&v);
for(int i=;i<=n;++i)
scanf("%d",&value[i]);
for(int j=;j<=n;++j)
scanf("%d",&weight[j]);
kill(n,v);
printf("%d\n",dp[n][v]);
}
}
一维数组也能过、只是第二层必须反序来、顺序的话同一件物品可能会被取多次
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int qq=;
int w[qq],v[qq];
int dp[qq];
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n,m;
memset(dp,,sizeof(dp));
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
scanf("%d",&v[i]);
for(int i=;i<=n;++i)
scanf("%d",&w[i]);
for(int i=;i<=n;++i)
for(int j=m;j>=v[i];--j) //一定记得是逆序、可以自己模拟一遍
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);;
printf("%d\n",dp[m]);
}
return ;
}
贴一份WA的代码
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int qq=;
int w[qq],v[qq];
int dp[qq][qq];
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n,m;
memset(dp,,sizeof(dp));
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
scanf("%d",&v[i]);
for(int i=;i<=n;++i)
scanf("%d",&w[i]);
for(int i=;i<=n;++i)
for(int j=w[i];j<=m;++j) //我开始还在想为什么这样不对
dp[i][j]=max(dp[i-][j],dp[i-][j-w[i]]+v[i]);
printf("%d\n",dp[n][m]);
}
return ;
}
//先出一组数据吧、
/* 1
5 0
2 4 1 5 1
0 0 1 0 0
这样的话在dp[3]的话是根本不会进入到第二层循环的、
也就是说dp[3][0]的值为0
*/
HDU 2602Bone Collector 01背包问题的更多相关文章
- HDU 2602 Bone Collector (01背包问题)
原题代号:HDU 2602 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 原题描述: Problem Description Many yea ...
- HDU——2602Bone Collector(01背包)
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 2955(01背包问题)
M - 01背包 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descript ...
- ACM HDU Bone Collector 01背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 这是做的第一道01背包的题目.题目的大意是有n个物品,体积为v的背包.不断的放入物品,当然物品有 ...
- HDU 2955(0-1背包问题)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#problem/M 题目: Description The aspir ...
- HDU-1864&&HDU-2602(01背包问题)
DP-01背包问题例题 输入处理有点恶心人,不过处理完后就是简单的DP了 从头开始dp[i]表示从0开始到i的最优结果,最后从都边里dp数组,求得最大的报销额. 对于每个i都要从头维护最优结果.(二刷 ...
- HDU 2602 Bone Collector(经典01背包问题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/O ...
- HDU 1864最大报销额 01背包问题
B - 最大报销额 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- HDU 3466 Proud Merchants 带有限制的01背包问题
HDU 3466 Proud Merchants 带有限制的01背包问题 题意 最近,伊萨去了一个古老的国家.在这么长的时间里,它是世界上最富有.最强大的王国.因此,即使他们的国家不再那么富有,这个国 ...
随机推荐
- linux下对拍
#!/bin/bash t=0; while true; do let "t = $t + 1" printf $t printf ":\n" ./rand & ...
- loadrunner11录制为空的解决办法(win7+chrome最新版本)
参考:https://www.cnblogs.com/zhang-zhi/archive/2018/09/10/9622605.html loadrunner11在win7中,使用chrome浏览器的 ...
- chrome浏览器 新打开的页面覆盖当前页面
chrome浏览器 本应该新打开一个页面,却覆盖了当前页面. 解决办法:使用鼠标中键打开一次,后续即可正常使用.
- Codeforces 113B
题目链接 B. Petr# time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- ThInkPHP加密和解密cookie(登录操作)
摘自:http://www.thinkphp.cn/code/1794.html 通过加密cookie是网站安全性更高,登录信息不保存在session中在function.php文件在建立两个函数,加 ...
- 外贸电子商务网站之Prestashop 设置网站基本信息
顶部banner图,首页各尺寸banner图.社交分享.物流支持.支付方式提醒等等设置 示例版本:1.6.1.11
- 关于iOS7的一切相关的资料
http://www.cocoachina.com/special/ios7/ PreviousNext 作为的用户,您可能需要了解 WWDC大会以及iOS 7的新界面 CocoaChina WWDC ...
- jQuery图片从下往上滚动效果
在线演示 本地下载
- pl/sql基础知识—函数快速入门
n 函数 函数用于返回特定的数据,当建立函数式,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据,我们可以使用create function来建立函数,实际案例: ...
- [idea]idea配置tomcat 标签: tomcatidea 2017-03-12 22:12 402人阅读 评论(19)
我们在使用idea的时候,一定会遇到的一步,就是使用tomcat来发布我们的项目,那么,如何在idea中设置tomcat呢?下面就随小编来一起学习一下吧. 设置tomcat 打开设置界面 Run-&g ...