• HDU 2602 Bone Collector


    Bone Collector
    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
    Appoint description: 

    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 2 31).
     

    Sample Input

    1
    5 10
    1 2 3 4 5
    5 4 3 2 1
     

    Sample Output

    14
     一个简单的01背包问题
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    long long a[1010],v[1010];
    long long dp[1010];
    int n,res;
    long long max(long long a,long long b)
    {
        if(a>=b)
            return a;
        else return b;
    }
    int main()
    {
        int T;
        while( cin >> T )
        {
            while( T -- )
            {
                cin >> n >> res;
                for(int i=0; i<n; i++)
                    cin >> v[i];
                for(int j=0; j<n; j++)
                    cin >> a[j];
                memset(dp,0,sizeof(dp));//初始化
                for(int i=0; i<n; i++)
                {
                    for(int j=res; j>=a[i]; j--)
                    {
                        dp[j] = max(dp[j], dp[j-a[i]]+v[i]);//01背包,理解
                    }
                }
                cout << dp[res] << endl;
            }
        }
        return 0;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    IOS总结_IOS经常使用的方法集合、调用系统电话、设备区分、APP内永不锁屏
    huffman编码——原理与实现
    python字典构造函数dict(mapping)解析
    tomcat配置sqlserver数据库
    Tomcat全攻略
    第一次QQ群视频教育有感
    UIControl-IOS开发
    java内存分析总结
    Android笔记 之 旋转木马的音乐效果
    Android中API建议的方式实现SQLite数据库的增、删、改、查的操作
  • 原文地址:https://www.cnblogs.com/l609929321/p/6706389.html
Copyright © 2020-2023  润新知