zoukankan      html  css  js  c++  java
  • 饭卡 (背包01 一维数组) http://acm.hdu.edu.cn/showproblem.php?pid=2546

    /*
    从一组数据中选出n个数,使这n个数的和最接近一个值x,
    背包问题,
    从一系列菜中,从最贵的菜(MAX)之外中选出几个菜,使菜的总价格sum最接近money-5;money-sum-MAX;
    钱数相当于背包总容量,菜相当于价值和体积一样物品;
    */
     
     
     
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int dp[1050];
    int main()
    {
        int n;
        while(scanf("%d",&n)&&n)
        {
            int Greens[n];
            memset(dp,0,sizeof(dp));
            memset(Greens,0,sizeof(Greens));
            int max1=-0x3f3f3f3f;
            for(int i=0; i<n; i++)
                scanf("%d",&Greens[i]);
            int money;
            scanf("%d",&money);
            if(money<5)
            {
                printf("%d ",money);
                continue;
            }
            sort(Greens,Greens+n);
            for(int i=0;i<n-1;i++) //遍历每道菜
                for(int j=money-5;j>=Greens[i];j--) //判断能不能买这种菜
                dp[j]=max(dp[j],dp[j-Greens[i]]+Greens[i]);
                int MAX=dp[money-5]; //最接近money-5的值
            printf("%d ",money-MAX-Greens[n-1]); //买过可以买的菜之后剩的钱数再买最贵的菜即可以使剩余钱数最少
        }
        return 0;
    }
    梦里不知身是客,一晌贪欢。
  • 相关阅读:
    NEERC 15 (10/12)
    uoj259 & 独立集问题的一些做法
    Berlekamp-Massey算法简单介绍
    树链剖分的一种用法
    长链剖分
    [黑科技]常数优化的一些技巧
    tarjan解决路径询问问题
    Comet OJ
    洛谷P3835 【模板】可持久化平衡树(FHQ Treap)
    LOJ#107. 维护全序集(FHQ Treap)
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/4969732.html
Copyright © 2011-2022 走看看