zoukankan      html  css  js  c++  java
  • HDU 2546 饭卡(01背包)

    思路:

    最贵的菜一定是最后一次购买使餐卡上剩下的钱最小。

    输入如果小于5的话直接输出~

    不然先从所有菜中找出最贵的菜,然后给餐卡至少留下5块钱买这个最贵的菜,剩下的用一个0-1背包去装满!

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #define sc(x) scanf("%d",&(x))
     6 #define pf(x) printf("%d
    ", x)
     7 #define CL(x, y) memset(x, y, sizeof(x))
     8 #define max(a, b) (a > b ? a : b)
     9 using namespace std;
    10 const int MAX = 1005;
    11 int dp[MAX], money[MAX];
    12 int n, m;
    13 int main ()
    14 {
    15     int i, j;
    16     while(sc(n))
    17     {
    18         if(n == 0) break;
    19         CL(dp, 0);
    20         for (i = 0; i < n; i++)
    21             sc(money[i]);   //价格
    22         sc(m);  //卡上的余额
    23         sort(money, money+n);     //排序,求前n-1个钱价的最大钱数
    24         if (m < 5)
    25             pf(m);
    26         else
    27         {
    28             for (i = 0; i < n-1; i++)    //01背包问题
    29                 for (j = m-5; j >= money[i]; j--)
    30                     dp[j] = max(dp[j], dp[j-money[i]] + money[i]);
    31             pf(m - dp[m-5] - money[n-1]);   //money[n-1] 最后一个价格
    32         }
    33     }
    34     return 0;
    35 }
    View Code
  • 相关阅读:
    不能说的话
    为什么书呆子不受欢迎
    Enum
    扩展方法
    若(p,q)=1,则(p^n,q^n)=1
    若a与m互质,则a不影响m的完全剩余组
    模m的剩余类里的一切数与m的最大公约数相等
    若p是与10互质的质数,则p-1个9能被p整除
    class.__subclasses__()
    权利要求书
  • 原文地址:https://www.cnblogs.com/ghostTao/p/4303562.html
Copyright © 2011-2022 走看看