• HDU 2602 Bone Collector(01背包裸题)


    Bone Collector

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 60469    Accepted Submission(s): 25209

    Problem Description
    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 231).
     
    Sample Input
    1
    5 10
    1 2 3 4 5
    5 4 3 2 1
     
    Sample Output
    14
     
    Author
    Teddy
     
    Source
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602

    意:一个叫做Bone Collector的男的有一个包,往包里放东西,使得其价值最大。

    输入:注意是先输入的是价值,后是体积。

    分析:01背包裸题,注意格式输入输出就行了,我就是输入格式写错了,找错误找了一个小时,QAQ

    下面给出AC代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int n;
     6     int v[1010],dp[1010],d[1010];//v代表体积,d代表谷歌值
     7     while(scanf("%d",&n)!=EOF)
     8     {
     9         while(n--)
    10         {
    11            memset(v,0,sizeof(v));
    12            memset(dp,0,sizeof(dp));
    13            memset(d,0,sizeof(d));
    14            int x,y;
    15            cin>>x>>y;
    16            for(int i=1;i<=x;i++)
    17               cin>>d[i];
    18            for(int i=1;i<=x;i++)
    19               cin>>v[i];
    20            for(int i=1;i<=x;i++)//01背包主函数
    21            {
    22                for(int j=y;j>=v[i];j--)
    23                {
    24                 dp[j]=max(dp[j],dp[j-v[i]]+d[i]);
    25                }
    26            }
    27            printf("%d
    ",dp[y]);
    28         }
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    Thinkphp回顾(五)之前台模板中的基本语法
    Thinkphp回顾之(四)查询方法深入学习
    Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
    Thinkphp学习回顾(二)之config.php的配置
    Thinkphp学习回顾(一)之基本结构目录
    端口
    curl put delete post get请求类型参数
    xshell连接virtualbox下的linux系统
    实现jsonp的三种方式
    匹配汉字
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/6819233.html
Copyright © 2020-2023  润新知