zoukankan      html  css  js  c++  java
  • 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;
    }

      

  • 相关阅读:
    java Semaphore的介绍和使用
    java CyclicBarrier的介绍和使用
    java CountDownLatch 使用介绍
    android模拟器不能上网设置
    计算几何题集
    BZOJ1004: [HNOI2008]Cards
    BZOJ1029: [JSOI2007]建筑抢修
    BZOJ1037: [ZJOI2008]生日聚会Party
    BZOJ1083: [SCOI2005]繁忙的都市
    Java开发笔记(一百一十四)利用Socket传输文本消息
  • 原文地址:https://www.cnblogs.com/RainingDays/p/2840909.html
Copyright © 2011-2022 走看看