zoukankan      html  css  js  c++  java
  • HDU 4501

    超市里有n件他想要的商品。小明顺便对这n件商品打了分,表示商品的实际价值。小明发现身上带了v1的人民币,会员卡里面有v2的积分,而且他能免费拿k件。他想知道他最多能买多大价值的商品。
    由于小明想要的商品实在太多了,他算了半天头都疼了也没算出来,所以请你这位聪明的程序员来帮帮他吧。


    Sample Input
    5 1 6 1 4 3 3 0 3 2 2 3 3 3 3 2 1 0 2 4 2 5 0 0 1 0 4 4 1 3 3 4 3 4 4
     
    Sample Output
    12 4

    思路:将v1,v2,k都当作一种体积,每种物品只能取一次,求max.......

    习惯性的在for中取最小值限制,因为这里导致wa了- -!,大概是因为在多个体积限制的背包里,当这个体积小于它的最小体积时,我们可以让它不去减它的最小体积,而是作为一种状态来传递其他体积的限制的值

    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    
    using namespace std;
    struct node
    {
        int x1,x2,x3;
    } per[105];
    
    int dp[105][105][110];
    
    int main()
    {
        int n,v1,v2,k;
        while(~scanf("%d%d%d%d",&n,&v1,&v2,&k))
        {
            for(int i = 1; i <= n; i++)
                scanf("%d%d%d",&per[i].x1,&per[i].x2,&per[i].x3);
    
            memset(dp,0,sizeof(dp));
            for(int i= 1; i <= n; i++)
                for(int j = v1; j >= 0; j--)
                    for(int l = v2; l >= 0; l--)
                        for(int q = k; q >= 0; q--)
                        {
                            int maxn= 0;
                            if(j >= per[i].x1 && maxn<dp[j-per[i].x1][l][q]+per[i].x3 )
                                maxn = dp[j-per[i].x1][l][q]+per[i].x3;
    
                            if(l >= per[i].x2 &&maxn< dp[j][l-per[i].x2][q]+per[i].x3)
                                maxn = dp[j][l-per[i].x2][q]+per[i].x3;
    
                            if(q> 0 && maxn < dp[j][l][q-1]+per[i].x3)
                                maxn = dp[j][l][q-1]+per[i].x3;
    
                            if(maxn > dp[j][l][q])
                                dp[j][l][q] = maxn;
                        }
            printf("%d
    ",dp[v1][v2][k]);
        }
        return 0;
    }
    

      

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/Przz/p/5409822.html
Copyright © 2011-2022 走看看