当前位置:网站首页>饭卡 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;
}
边栏推荐
猜你喜欢

pycharm 修改 pep8 E501 line too long > 0 characters

拿起相机,便是最好的艺术疗愈
![Unity learning shader notes [82] black and white processing of enhanced single channel color rendering](/img/db/d745a434e76511742d1264706b5d9a.png)
Unity learning shader notes [82] black and white processing of enhanced single channel color rendering

MySQL advanced - transaction and index

Chrome officially supports MathML, which is enabled in chromium dev 105 by default

Wechat applet video sharing platform system graduation design completion (8) graduation design thesis template

Enter a valid user name and password in the Microsoft LDAP configuration page, and enter a valid user name in the Microsoft LDAP configuration page

RDK simulation experiment

NM01-独立于总线协议的NM模块功能概述与API定义

微信核酸检测预约小程序系统毕业设计毕设(1)开发概要
随机推荐
Wechat applet video sharing platform system graduation design completion (4) opening report
977. Square of ordered array
Remember to use ternary expressions when switching transformations
QQmlApplicationEngine
paddlepaddle 28 搭建基于卷积的自动编码机
MySQL advanced - transaction and index
Typescript
Wechat applet video sharing platform system graduation design (3) background function
微信小程序视频分享平台系统毕业设计毕设(6)开题答辩PPT
国金证券是国企吗?在国金证券开户资金安全吗?
初夏,开源魔改一个带击杀音效的电蚊拍!
Chrome 正式支持 MathML,默认在 Chromium Dev 105 中启用
How to download wechat payment certificate (API certificate)
Aptos教程-参与官方激励测试网(AIT2 激励测试网)
NM02-独立于总线协议的NM模块调用序列图及代码解释
Wechat nucleic acid detection and appointment applet system graduation design (3) background function
Esp32-c3 introductory tutorial question ⑪ - ESP tls: create_ ssl_ handle failed, tls_ io_ instance->options. trusted_ certs null
巴比特 | 元宇宙每日必读:一千块就能买一个虚拟主播?这是小企业的直播福音还是在“割韭菜”?...
SteamOS 3.3 Beta 发布,Steam Deck 中文键盘终于来了
微信小程序视频分享平台系统毕业设计毕设(3)后台功能