Bone Collector解题报告
2013-07-18 20:33
351 查看
题目摘要:Many years ago , in Teddy’shometown there was a man who was called “Bone Collector”. This man like tocollect 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 ofcollecting there are a lot of bones , obviously , different bone has differentvalue 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?
题目大意:很多年以前,有个人爱收集骨头,狗的骨头,牛的骨头……现在他有个体积为V的包,在他的旅途中,他可以将遇到的骨头放进包里,每个骨头有两个属性,一个是体积,一个是价值,求他能得到的最大价值
输入输出要求:
Input
The first line contain a integer T , thenumber of cases.
Followed by T cases , each case three lines , the first line contain twointeger N , V, (N <= 1000 , V <= 1000 )representing the number of bonesand the volume of his bag. And the second line contain N integers representingthe value of each bone. The third line
contain N integers representing thevolume of each bone.
Output
One integer per line representing themaximum of the total value (this number will be less than 231).
输入输出样例:
Sample Input
1
5 10
1 2 3 4 5
5 4 3 2 1
Sample Output
14
解题思路:完全是01背包问题,代码都一样……
代码:
#include<iostream>
#include<cmath>
using namespace std;
int f[1005];
int w[1005],c[1005];
int max(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
int i,j,n,v,t;
cin>>t;
while(t--)
{
cin>>n>>v;
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
cin>>w[i];
for(i=1;i<=n;i++)
cin>>c[i];
for(i=1;i<=n;i++)
{
for(j=v;j>=c[i];j--)
{
f[j]=max(f[j],f[j-c[i]]+w[i]);
}
}
cout<<f[v]<<endl;
}
return 0;
}
解题感想:模板题不解释
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 ofcollecting there are a lot of bones , obviously , different bone has differentvalue 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?
题目大意:很多年以前,有个人爱收集骨头,狗的骨头,牛的骨头……现在他有个体积为V的包,在他的旅途中,他可以将遇到的骨头放进包里,每个骨头有两个属性,一个是体积,一个是价值,求他能得到的最大价值
输入输出要求:
Input
The first line contain a integer T , thenumber of cases.
Followed by T cases , each case three lines , the first line contain twointeger N , V, (N <= 1000 , V <= 1000 )representing the number of bonesand the volume of his bag. And the second line contain N integers representingthe value of each bone. The third line
contain N integers representing thevolume of each bone.
Output
One integer per line representing themaximum of the total value (this number will be less than 231).
输入输出样例:
Sample Input
1
5 10
1 2 3 4 5
5 4 3 2 1
Sample Output
14
解题思路:完全是01背包问题,代码都一样……
代码:
#include<iostream>
#include<cmath>
using namespace std;
int f[1005];
int w[1005],c[1005];
int max(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
int i,j,n,v,t;
cin>>t;
while(t--)
{
cin>>n>>v;
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
cin>>w[i];
for(i=1;i<=n;i++)
cin>>c[i];
for(i=1;i<=n;i++)
{
for(j=v;j>=c[i];j--)
{
f[j]=max(f[j],f[j-c[i]]+w[i]);
}
}
cout<<f[v]<<endl;
}
return 0;
}
解题感想:模板题不解释
相关文章推荐
- HDU-2602___Bone Collector——解题报告 01背包
- HDU 2602 Bone Collector 解题报告(dp入门题)
- Hdu 2602 Bone Collector 01背包 解题报告
- HD 2062 Bone Collector 解题报告
- hdu 2602 Bone Collector 解题报告
- HDOJ 2602 Bone Collector 解题报告
- YT06-背包-1001—Bone Collector -(6.27日-烟台大学ACM预备队解题报告)
- hdu 2602 - Bone Collector(01背包)解题报告
- pku 1961 KMP period 解题报告
- POJ-3258 River Hopscotch 解题报告
- hdu 4520 小Q系列故事——最佳裁判 解题报告
- hdu4800 Josephina and RPG 解题报告
- 解题报告:UVA11395 Sigma Function 找规律
- POJ 2734(5) 进制转换 解题报告
- POJ-1905 Expanding Rods 解题报告
- Uva 12012 Detection of Extraterrestrial 解题报告
- POJ3739 Special Squares 解题报告
- SDOI2017 Round1 解题报告
- 【解题报告】pku数算mooc 第8周 图 兔子与星空(poj 5442)
- 2661 Factstone Benchmark 解题报告