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

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

Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …

The bone collector had a big bag with a volume of V ,and along his trip of collecting there are a lot of bones , obviously , different bone has different value and different volume, now given the each bone’s value along his trip , can you calculate out the maximum of the total value the bone collector can get ?

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

大致思路:

标准的01背包,创建一个二维数组dp[i][j],i代表第i件物品,j代表剩余的背包容量。

但不知道为什么用滚动数组做就是WA。先记录一下。

代码:

#include
#include
#include
#include
using namespace std;int dp[1000][1000];int main(){ int T; cin>>T; while(T--) { int N,V,value[1001],volume[1001]; cin>>N>>V; for(int i=1;i<=N;++i) cin>>value[i]; for(int i=1;i<=N;++i) cin>>volume[i]; for(int i=1;i<=V;++i){ if(volume[1]<=i) dp[1][i]=value[1]; else dp[1][i]=0; } for(int i=2;i<=N;++i){ for(int j=V;j>=0;--j){ if(j>=volume[i])//状态转移方程 dp[i][j]=max(dp[i-1][j],dp[i-1][j-volume[i]]+value[i]); else dp[i][j]=dp[i-1][j]; } } cout<
<

转载地址:http://lbobi.baihongyu.com/

你可能感兴趣的文章
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
retext出现Could not parse file contents, check if you have the necessary module installed解决方案
查看>>
pyQt不同窗体间的值传递(一)——对话框关闭时返回值给主窗口
查看>>
linux mint下使用外部SMTP(如网易yeah.net)发邮件
查看>>
北京联通华为光猫HG8346R破解改桥接
查看>>
python使用win32*模块模拟人工操作——城通网盘下载器(一)
查看>>
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
2017阿里内推笔试题--算法工程师(运筹优化)
查看>>
python自动化工具之pywinauto(零)
查看>>
python一句话之利用文件对话框获取文件路径
查看>>
PaperDownloader——文献命名6起来
查看>>
PaperDownloader 1.5.1——更加人性化的文献下载命名解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
查看>>
JVM最简生存指南
查看>>
漂亮的代码,糟糕的行为——解决Java运行时的内存问题
查看>>