博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电2602--Bone Collector(01背包)
阅读量:6456 次
发布时间:2019-06-23

本文共 2236 字,大约阅读时间需要 7 分钟。

题目:
 
Input
The first line contain a integer T , the number of cases.
Followed by T cases , each case three lines , the first line contain two integer N , V, (N <= 1000 , V <= 1000 )representing the number of bones and the volume of his bag. And the second line contain N integers representing the value of each bone. The third line contain N integers representing the volume of each bone.
 
Output
One integer per line representing the maximum of the total value (this number will be less than 2
31).
 
Sample Input
1 5 10 1 2 3 4 5 5 4 3 2 1
 
Sample Output
14
 
Author
Teddy
 
Source
 
Recommend
lcy   |   We have carefully selected several similar problems for you:            
 
RE: 01背包基础题:
 
//感觉这个比较好理解:   46ms  #include 
#include
#include
#define max(a, b) a>b?a:busing namespace std;int dp[1010][1010], val[1010], vol[1010];int main(){ int t; scanf("%d", &t); while(t--) { int n, v; scanf("%d %d", &n, &v); for(int i = 1; i <= n; i++) scanf("%d", &val[i]); for(int i = 1; i <= n; i++) scanf("%d", &vol[i]); for(int i = 1; i <= n; i++) { for(int j = 0; j <= v; j++) //容量; { if(j < vol[i]) dp[i][j] = dp[i-1][j]; else dp[i][j] = max(dp[i-1][j], dp[i-1][j-vol[i]] + val[i]); } } printf("%d\n", dp[n][v]); } return 0; }

 

//比二维数组稍微快点; 31ms #include 
#include
#include
#define max(a, b) a>b?a:b using namespace std;int dp[1010], val[1010], vol[1010];int main(){ int t; scanf("%d", &t); while(t--) { int n, v; scanf("%d %d", &n, &v); for(int i = 1; i <= n; i++) scanf("%d", &val[i]); for(int j = 1; j <= n; j++) scanf("%d", &vol[j]); memset(dp, 0, sizeof(dp)); for(int k = 1; k <= n; k++) { for(int Q = v; Q >= vol[k]; Q--) { dp[Q] = max(dp[Q], dp[Q - vol[k]] + val[k]); } } printf("%d\n", dp[v]); } return 0; }

 

转载于:https://www.cnblogs.com/soTired/p/4763252.html

你可能感兴趣的文章
网路流24题总结
查看>>
15 个 Android 通用流行框架大全
查看>>
ant 执行java文件,java文件中含中文,显示乱码
查看>>
IE8兼容@media和mp4视频的解决方案
查看>>
第二周总结
查看>>
概率图模型建模、学习、推理资料总结
查看>>
【转】知道这20个正则表达式,能让你少写1,000行代码
查看>>
自定义 启动和关闭 oracle 的命令
查看>>
SQLite数据库、ListView控件的使用
查看>>
Quartz
查看>>
正则表达式介绍
查看>>
初识Scala反射
查看>>
第三十九天
查看>>
Redis详解
查看>>
论程序员加班的害处
查看>>
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
过滤DataTable表中的重复数据
查看>>
prepare for travel 旅行准备
查看>>