zoukankan      html  css  js  c++  java
  • 解题报告:hdu2602 Bone collector 01背包模板

    2017-09-03 15:42:20

    writer:pprp

    01背包裸题,直接用一维阵列的做法就可以了

    /*
    @theme: 01 背包问题 - 一维阵列 hdu 2602
    @writer:pprp
    @begin:15:34
    @end:15:42
    @declare:最基本的01背包问题 POJ 3624
    @error:最后取得是dp[M]不是 dp[M-1],然后注意数据范围dp的数据范围是M的范围
    @date:2017/9/3
    */
    
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    
    using namespace std;
    const int maxn = 1010;
    int dp[maxn];
    int w[maxn], v[maxn];
    int N, M;
    
    int main()
    {
        freopen("in.txt","r",stdin);
        ios::sync_with_stdio(false);
        int cas;
        cin >> cas;
        while(cas--)
        {
            memset(dp,0,sizeof(dp));
            cin >> N >> M;
            for(int i = 0 ; i < N ; i++)
                cin >> v[i];
            for(int i = 0 ; i < N ; i++)
                cin >> w[i];
    
            for(int i = 0 ; i < N ; i++)
            {
                for(int j = M ; j >= w[i] ; j--)
                {
                    dp[j] = max(dp[j],dp[j-w[i]]+v[i]);
                }
            }
            cout << dp[M] << endl;
        }
    
        return 0;
    }

     

  • 相关阅读:
    21 情态动词
    20 动词的用法
    19 完成时/现在完成时和过去完成时的区别
    18 将来时
    17 一般过去时和过去进行时
    16 一般现在时和现在进行时
    15 There / Here be句型
    14 不定量表达法
    13 副词
    12 形容词
  • 原文地址:https://www.cnblogs.com/pprp/p/7469729.html
Copyright © 2011-2022 走看看