首页 > 其他分享 >HDU 2546 饭卡

HDU 2546 饭卡

时间:2022-10-25 17:01:21浏览次数:64  
标签:钱数 HDU 饭卡 2546 int 卡上 余额 种菜 include


题目链接:​​传送门​​ 题面:

Problem Description

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

啊,难得的中文题面
这是道好题
挺考验思维的
首先,如果一开始钱数就少于
哪道菜也买不了
直接把钱数输出出来就好
然后就是看金额大于的条件应该怎么用
他要求使卡上的余额最少
但5元以上才能买
也就是最后一次要买那个最贵的菜
这一定是最优的
所以设背包容量为输入的钱数减去
因为最后块钱要留下来买最贵的菜
把菜按价格从小到大排序
在做背包的时候去掉最后一个也就是最贵的那个菜
输出的时候加上少的块钱
减去背包算出来的钱数和最后一道菜的钱数就好了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <complex>
#include <algorithm>
#include <climits>
#include <queue>
#include <map>
#include <vector>
#include <iomanip>
#define
#define
#define

using namespace std;
int n, w[A], V, ans, f[A];

int main() {
while (cin >> n) {
if (!n) return 0;
memset(f, 0, sizeof f);
for (int i = 1; i <= n; i++) cin >> w[i];
sort (w + 1, w + n + 1);
cin >> V;
if (V < 5) {
cout << V << endl;
continue;
}
V -= 5;
for (int i = 1; i < n; i++)
for (int j = V; j >= w[i]; j--)
f[j] = max(f[j], f[j - w[i]] + w[i]);
cout << V + 5 - f[V] - w[n] << endl;
}
}


标签:钱数,HDU,饭卡,2546,int,卡上,余额,种菜,include
From: https://blog.51cto.com/lyle/5794963

相关文章

  • HDU 2602 Bone Collector
    题目链接:​​传送门​​​题面:ProblemDescriptionManyyearsago,inTeddy’shometowntherewasamanwhowascalled“BoneCollector”.Thismanliketocollec......
  • HDU2376 Average distance
    题目链接:传送门求树上任意两点间的路径和的平均值非常套路统计每条边被经过多少次就是两边的点数的乘积注意精度就好#include<cstdio>#include<cstring>#include<alg......
  • HDU 1394 Minimum Inversion Number
    题目链接:​​传送门​​求出原数组的逆序对算把一个数从对头拿到队尾的过程中产生的贡献诶我好像昨天做过这个题#include<iostream>#include<cstdio>#include<cstring......
  • HDU 4135 Co-prime
    题目链接:​​传送门​​多组数据问区间内与互质的数的个数区间问题显然要转化成两个区间相减的问题也就是的答案减去的答案这里反过来求不互质的数的个数筛法可以提示我......
  • HDU 3349 Consumer
    ​​题目链接​​题目背景有依赖的背包,下面用我常用的变量和说法。题目大意有个主件和块钱,每个主件都有费用和对应的个附件,附件也有费用与价值,购买主件后才能购买附件,问怎......
  • HDU 1465(错排公式)
    不容易系列之一TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):9829    AcceptedSubmission(s):......
  • HDU 4585(Shaolin-Treap的lower_bound&upper_bound操作)
    题意:有n个数,每个数进来时求出与它与它最接近的数的编号(多个答案选数小的)模板测试#include<iostream>#include<cmath>#include<algorithm>#include<cstdio>#include<cst......
  • B - K-th Number HDU - 6231 (尺取+二分)WindowsSource 2017中国大学生程序设计竞赛-哈
    题意给你数列A,对于A的长度\(\geqlen\)的所有区间内的找出第k大的数,然后放到另一个数组中。然后在新数组中找到第M大的数。思路代码......
  • HDU2376——Average distance(思维+树形DP)
    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2376原文:https://www.codenong.com/cs109682980/题意:给定一棵树,有边权,求树上任意两点之间距离的和的平均值。思路......
  • hdu 1979 DFS + 字典树剪枝
    ​​http://acm.hdu.edu.cn/showproblem.php?pid=1979​​FilltheblanksTimeLimit:3000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)Tota......