zoukankan      html  css  js  c++  java
  • BNUOJ 6727 Bone Collector

    Bone Collector

    1000ms
    32768KB
     
    This problem will be judged on HDU. Original ID: 2602
    64-bit integer IO format: %I64d      Java class name: Main
     
     
    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
     

    Source

     
     
    解题:0-1背包。。。
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <vector>
     6 #include <climits>
     7 #include <ctype.h>
     8 #include <cmath>
     9 #include <algorithm>
    10 #define LL long long
    11 using namespace std;
    12 int v[1001],w[1001],dp[1001];
    13 int main(){
    14     int kase,i,j,n,m;
    15     scanf("%d",&kase);
    16     while(kase--){
    17         memset(dp,0,sizeof(dp));
    18         scanf("%d %d",&n,&m);
    19         for(i = 1; i <= n; i++)
    20             scanf("%d",v+i);
    21         for(i = 1; i <= n; i++)
    22             scanf("%d",w+i);
    23         for(i = 1; i <= n; i++){
    24             for(j = m; j >= w[i]; j--){
    25                 dp[j] = max(dp[j],dp[j-w[i]]+v[i]);
    26             }
    27         }
    28         printf("%d
    ",dp[m]);
    29     }
    30     return 0;
    31 }
    View Code
  • 相关阅读:
    制作ubuntu容器完整步骤
    linux系统python3安装pip
    ssh连接服务器提示拒绝了密码
    ubuntu中vi编辑中按键错误
    虚拟机ubuntu连不上网
    NOIP2020退役记
    【NOIp2020游记】
    loki简单安装配置使用
    .net下com调用支持x86/x64
    nginx 504 Gateway Time-out
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/3831619.html
Copyright © 2011-2022 走看看