饭卡

作者: DongBold | 来源:发表于2017-03-26 19:41 被阅读65次

饭卡

电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。
某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。

Input

多组数据。对于每组数据:

第一行为正整数n,表示菜的数量。n<=1000。

第二行包括n个正整数,表示每种菜的价格。价格不超过50。

第三行包括一个正整数m,表示卡上的余额。m<=1000。

n=0表示数据结束。

Output

对于每组输入,输出一行,包含一个整数,表示卡上可能的最小余额。

Sample Input

1

50

5

10

1 2 3 2 1 1 2 3 2 1

50

0

Sample Output

-45

32

动态规划, 可以看做01背包来做, 对于每一种菜来说, 可以放入背包或者不放入背包中,这里需要注意的的几个地方:

  • 对于余额小于5元来说, 直接输出余额就行了, 什么也买不了
  • 首先要对菜的价格进行排序, 将价格最高的先放一边, 确保最后会多余五元来刷这个最贵的菜.
  • 动态规划的状态转移方程:
for i in 0...n-1
    for j in balance-5...a[i]
        dp[j] = max(dp[j], dp[j - a[i]] + a[i])

第二个循环减五是因为要确保最后多五元来刷最贵的菜

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    int balance;
    while(~scanf("%d", &n) && n) {
        int a[1005];
        int dp[1005];
        memset(dp, 0, sizeof dp);
        for(int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        scanf("%d", &balance);
        if(balance < 5) {
            printf("%d\n", balance);
            continue;
        }
        sort(a, a+n);
        for (int i = 0; i < n - 1; i++) {
            for(int j = balance - 5; j >= a[i]; j--) {
                dp[j] = max(dp[j], dp[j-a[i]] + a[i]);
            }
        }
        printf("%d\n", balance - dp[balance - 5] - a[n - 1]);
    }

    return 0;
}

相关文章

  • 2017-11-17

    学杂费840+740.饭卡300+300.饭卡300+300饭卡200+200饭卡100+100饭卡300+300

  • 红饭卡 粉饭卡

    学校食堂改制以后,食堂不在于盈利运转。而在于更好地服务学生,让学生吃好吃饱。 原来学生到窗口用自己的饭卡刷...

  • 饭卡

    要我我大学最遇到为神奇的那就是和饭卡相关的故事 大学开学第一天,领取了新饭卡,里面有500元.刚好我也带了透明胶....

  • 饭卡

    "同学,你好" 我心里一惊,原来不是舍友,眼前的人有几分拘谨、促狭。 "嗯,我能向你借一张饭卡吗?我们宿舍钥匙忘带...

  • 饭卡

    这是周二的早晨,校园里学生匆匆的身影与那没有营养的广播声构成了一幅莫名和谐的画,而杨大力呢,此刻却没心情去欣赏,毕...

  • 饭卡

    50

  • 饭卡

    “去食堂吃饭吗老哥” 不会又要带饭吧……室友心想,“不去,我要出去吃” “那正好,把饭卡借我” “……” “不好意...

  • 饭卡

    这是一次决绝的报复。 事情的起因是这样的。我在校园里捡到一张饭卡,打算上交到学校的失物招领处,但有些踌躇,想起自己...

  • 饭卡

    饭卡 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等...

  • 饭卡

    进入新的学校,三个月啦~我们都在慢慢适应中。最初的问题是饭卡,虽然我也没有一个准确的答案给多少,但作为工薪族,...

网友评论

      本文标题:饭卡

      本文链接:https://www.haomeiwen.com/subject/qsikottx.html