当前位置:网站首页>饭卡 HDU2546
饭卡 HDU2546
2022-07-02 16:49:00 【EdwinAze】
饭卡 HDU2546
饭卡 - HDU 2546 - Virtual Judge (csgrandeur.cn)
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。
某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。
Input
多组数据。对于每组数据:
第一行为正整数n,表示菜的数量。n<=1000。
第二行包括n个正整数,表示每种菜的价格。价格不超过50。
第三行包括一个正整数m,表示卡上的余额。m<=1000。
n=0表示数据结束。
Output
对于每组输入,输出一行,包含一个整数,表示卡上可能的最小余额。
Input
1
50
5
10
1 2 3 2 1 1 2 3 2 1
50
0
output
-45
32
思路
如果把题目改成, 饭卡余额m, n个菜品, 求买到菜品总价值最大,那么是标准的01背包问题。
但这里求饭卡余额最小, 且该题代价跟价值是相等的,总价值最大时余额便是最小, 用总余额减去总价值即可。
不过还有当 余额为 大于5时, 可以超出背包容量塞进大物品, 那么最优解肯定是用这5块买最贵的菜品, 于是就把余额先用去5块, 买最大的那个, 剩下的钱再求剩下的菜品最大价值。
求剩下时背包容量不能溢出, 也就是标准01背包问题, 求出最大价值在输出时加上原本最大的那个菜品就行。
代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e3 +10;
int f[N];
int w[N];
int n,m;
int main()
{
while(cin >> n && n)
{
memset(f, 0, sizeof f);
for(int i = 1; i <= n;i ++)
cin >> w[i];
sort(w + 1, w + 1 + n);
cin >> m;
if(m < 5)
{
cout << m <<endl;
continue;
}
for(int i = 1; i < n; i++)
for(int j = m - 5; j >= w[i]; j --)
f[j] = max(f[j], f[j - w[i]] + w[i]);
cout << m - a[n] - f[m - 5] << endl;
}
return 0;
}
边栏推荐
- Wechat applet video sharing platform system graduation design completion (4) opening report
- 实施阴影介绍
- Qt官方示例:Qt Quick Controls - Gallery
- QQmlApplicationEngine
- Wechat applet video sharing platform system graduation design completion (5) assignment
- 利用DOSBox运行汇编超详细步骤「建议收藏」
- wait_ for_ Gap -- restore archive from primary archive to secondary Archive
- Laravel框架安装时遇到的坑
- 又一所双非改考408,会爆冷么?南昌航空大学软件学院
- 1288_FreeRTOS中vTaskResume()接口以及中断安全版本接口实现分析
猜你喜欢

Babbitt | metauniverse daily must read: can you buy a virtual anchor for 1000 yuan? Is this the live gospel of small businesses or "cutting leeks"

微信小程序视频分享平台系统毕业设计毕设(2)小程序功能

再放寬!這些應届生,可直接落戶上海

pycharm 修改 pep8 E501 line too long > 0 characters

Detailed explanation of map set

微信小程序视频分享平台系统毕业设计毕设(5)任务书

Pit encountered during installation of laravel frame
![[golang | grpc] generate certificates using OpenSSL](/img/a6/0c9c80cc24c5f8585051e00e73072f.png)
[golang | grpc] generate certificates using OpenSSL

Qt Official examples: Qt Quick Controls - Gallery

WPS inserts a picture and displays it completely
随机推荐
WPS inserts a picture and displays it completely
Leetcode 面试题 16.11. 跳水板
毕业总结
RTE11- 中断解耦功能
[Yugong series] July 2022 go teaching course 001 introduction to go language premise
Typescript
SteamOS 3.3 Beta 发布,Steam Deck 中文键盘终于来了
Freemaker+poi realizes dynamic generation and parsing of Excel files
[Northwestern Polytechnic University] information sharing of the first and second postgraduate examinations
No such file or directory: ‘/tmp/tmpxxx/tmpxxx. py‘
再放寬!這些應届生,可直接落戶上海
微信小程序视频分享平台系统毕业设计毕设(6)开题答辩PPT
Memory mapping of QT
Yingguang MCU development case
微信核酸检测预约小程序系统毕业设计毕设(1)开发概要
Wechat nucleic acid detection appointment applet system graduation design completion (5) task statement
Nvidia 显卡 Failed to initialize NVML Driver/library version mismatch 错误解决方案
使用NPOI导出Excel文件
架构设计——ID生成器「建议收藏」
vimium映射鍵