• hdu 2602 Bone Collector


      终于开始做自己一直不敢碰的dp了,内心颇不平静。很久以前看过的背包九讲也没什么印象了。这个题错了四次。之前老师有说过看到dp不要把它想成dp,要按照数学归纳的路子来。先来个最初的归纳假设,如果过弱再加强归纳假设,如果过强,则在松一些。说服自己尽量这么干,毕竟刚开始真的会比较困难。要找到最初的归纳假设就相当困难,何况加强或者松弛,于我,比较难。

      写着题时脑子里面一直恍恍惚惚的,恐惧心理已经完全打败了我。四次错在v不是从0开始,哎。该死。

      

    View Code
    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    const int maxn=1001;
    
    struct BONE
    {
        int val;
        int vol;
    }bone[maxn];
    
    int n,v;
    void init()
    {
        scanf("%d %d",&n,&v);
        for(int i=1;i<=n;i++)
            scanf("%d",&bone[i].val);
        for(int i=1;i<=n;i++)
            scanf("%d",&bone[i].vol);
    }
    
    int dp[maxn][maxn];
    void DP()
    {
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=v;j++)
            {
                if(j>=bone[i].vol)
                    dp[i][j]=max(dp[i-1][j],dp[i-1][j-bone[i].vol]+bone[i].val);
                else
                    dp[i][j]=dp[i-1][j];
            }
        }
        printf("%d\n",dp[n][v]);
    }
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            init();
            DP();
        }
        return 0;
    }

      

  • 相关阅读:
    c++智能指针的一些文章
    c++ template(8)模版多态
    空指针赋值分区
    windbg调试命令
    c++ template(5)模板实战
    GetStockObject 理解
    c++ template(6)模板术语
    c++ template(71)模板参数声明
    DirectDraw教程资料
    c++ template(9)trait和Policy
  • 原文地址:https://www.cnblogs.com/RainingDays/p/2840909.html
Copyright © 2020-2023  润新知