hdu2546 饭卡

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

饭卡

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18165    Accepted Submission(s): 6324


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的时候什么都买不了,直接输出余额,否则先用5买最贵的菜,然后转化为容量为m - 5的零一背包

状态转移方程是  

f[i] = max{ f[i], f[i - price[i]] + price[i] }


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

int price[1005], dp[1005], sizedp = sizeof(dp);
int n, m;

int main()
{
	while (~scanf("%d", &n) && n) {
		for (int i = 1; i <= n; i++)
			scanf("%d", &price[i]);
		scanf("%d", &m);
		if (m >= 5) {
			sort(price + 1, price + n + 1);
			int t = price[n];   //最贵的菜的价格
			memset(dp, 0, sizedp);
			for (int i = 1; i <= n - 1; i++) {   //用滚动数组求容量为m - 5的零一背包
				for (int j = m - 5; j >= price[i]; j--) {
					if (dp[j - price[i]] + price[i] > dp[j])
						dp[j] = dp[j - price[i]] + price[i];
				}
			}
			printf("%d\n", m - t - dp[m - 5]);   //注意最终解是dp[m - 5]
		}
		else {
			printf("%d\n", m);
		}
	}
	return 0;
}





hdu 2546 饭卡 dp 饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25502 Accepted Submission(s): 8912 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判 阅读详情

相关推荐

从选型到阵列:基于ESP32-S3的智能硬件麦克风系统设计实战

本文详细介绍了基于ESP32-S3芯片设计智能硬件麦克风阵列的完整实战方案。从核心芯片选型、数字MEMS麦克风的参数解读与电路设计,到关键的声学结构密封、阵列布局策略,再到利用ESP-ADF框架构建音频处理流水线并集成回声消除、噪声抑制等算法,提供了从硬件到软件的全链路设计指南与避坑要点,旨在实现清晰、稳定的远场语音交互。

weixin_29173777的博客 265

HDU 饭卡(01背包)

饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 34445    Accepted Submission(s): 11828 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,

ClonH的博客 1505

ffmpeg(一) ffmpeg+QT开发环境搭建

(exe 程序编译的时候只需要包含 xxx.dll.a 静态导入库,运行的时候才需要 xxx.dll 文件)这个 .pro 文件的配置,是指导程序编译的时候,可以找到对应的动态库。值得一提的是,在Windows中,静态链接库(Static Link Library)的扩展名也是.lib、.dll.a。其实只要你掌握了FFmpeg,也可以很快上手其他音视频开发库,因为底层原理都是一样的,你最终操作的都是一样的数据,比如MP3、MP4文件。导入库:不包含函数的具体实现代码(函数的具体实现代码存储在dll中)

小道士写程序 8202

HDU 饭卡 01背包

饭卡 Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 11   Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Size: ← →

colorfulshark 655

【具身算法】VLA算法-Diffusion Policy

《扩散策略:多模态机器人控制的新方法》摘要 本文提出了一种基于扩散模型的机器人控制策略(DiffusionPolicy),用于解决视觉运动控制中的多模态行为、高维动作空间和训练稳定性问题。该方法利用去噪扩散概率模型(DDPM)生成动作序列,通过迭代优化处理复杂动作分布,显著提升了性能。实验表明,在15项机器人操作任务中,扩散策略平均性能提升46.9%,有效解决了传统显式/隐式策略的局限性。其核心优势在于:1)优雅建模多模态动作分布;2)适应高维动作空间;3)训练过程稳定。未来工作将探索与强化学习的结合及计算

puzhinan7781的博客 1389

高速PCB设计中的一些常用规则

目前,高速PCB产品设计中,高速接口的应用日益普及,对于复杂的设计而言,高速走线就如同“蜘蛛网”一样密布在PCB各处,因此,在进行PCB检查及评审时,必要的高速PCB设计经验法则及规则是工程师开展工作必不可少的知识储备。

一只豌豆象的博客 3413

HDU -- 饭卡(ACM Step: 3.3.5)

一、概述 1.问题描述 刷卡买菜,给定卡上余额,每种菜的价格,求消费后可以得到的最小余额,有约束如下: 1)卡上余额不足5时,不能消费,即使余额足以支付物品 2)卡上余额大于等于5时,为所欲为,即使余额被刷成负值 2.问题链接 HDU -- 饭卡(ACM Step: 3.3.5) 3.问题截图 图1.1 问题截图 二、算法思路 乍一看下,以为是普通的01背包问题,只不过需要加几...

hexiaole1994的专栏 781

45、数据挖掘学术文献推荐

本文是一篇关于数据挖掘领域的重要学术文献推荐,涵盖了经典理论与最新研究成果。内容包括关键研究论文、综述文章、教科书和专著的介绍,以及来自顶级会议和期刊的出版物推荐。此外,还探讨了数据挖掘与其他领域的交叉研究,如机器学习、统计学和数据库系统,并列举了多个实际应用案例。最后,分析了数据挖掘的未来发展趋势,如更加智能化的算法、高效的计算平台及隐私保护技术。无论是初学者还是专业人士,这些文献都将提供宝贵的学习资源和前沿动态。

qsc90123456的博客 228

hdu 2546 饭卡(经典dp)

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=2546 题目大意: 余额>=5,就可消费。否则,不能。(一开始又理解错了) 状态转移方程: 在保证余额>=5的情况下:dp[ j ] = max(dp[ j ], dp[ j - jg[i] ]+jg[ i ]); (二维:if (j>=jg[i]&&(dp[i - 1

sunshine_YG的专栏 508

汽车OTA 测试用例

汽车OTA 测试用例

天赐好车的博客 973

uniapp(安卓苹果app端) - 微信小程序分享提示报错“由于不支持的分享类型无法分享到微信“,“由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信“解决办法,uniapp小程序分享失败

uni-app,安卓app,苹果app,手机app端,苹果ios,安卓Android,移动端app,分享,微信分享,微信朋友圈,微信好友,转发,vue2,vue3,App端调用手机的系统分享,微信小程序,分享功能,原生app分享小程序到微信,可分享到微信、朋友圈等,报错,uniapp分享报错由于不支持的分享类型无法分享到微信,未审核应用,uniApp安卓苹果app报错由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信,微信appid,已经配置了,还是报错,无法解决,一直提示,APP_ID错误,打包

✅ 精选推荐文章 5509

HDU-2546-饭卡

HDU-2546-饭卡 传送门 这道题就是普通背包问题。就是几个月下来太久没写题,我已经荒废了。 题目是中文题面,我就不过多说啦~ 这道题我们就直接处理,因为是想让饭卡里面的余额尽可能负的越多,题目中规定不足五块钱啥也干不了,所以我们就先保留五块钱出来,然后用剩下的钱尽可能的买能买到的东西,然后用剩下留下的五块钱买最贵的菜即可。当然我们这里特判一种特殊情况,如果我们的卡里本来就不足五块钱,那么我们就只能输出原来输入的钱。 所以dp[i]记录不超过i的价格中我们可以买的最贵的菜的总价格。 w[]数组中记录每种

qq_44624316的博客 237

基于 Qt C++ 的战术通信终端

logMessage(QString("新客户端连接来自: %1:%2").arg(incomingTcpSocket->peerAddress().toString()).arg(incomingTcpSocket->peerPort()));logMessage(QString("服务器已启动,在 [%1]:%2 监听IPv6连接...").arg(ui->lineEditAddress->text()).arg(port));

寒寒豆豆软件公司的博客 77

动态规划 HDU 2546 饭卡

在acm群里看到了这样的一个题目,拿过来看了一下,感觉还蛮有意思的,题目大意是饭卡上有m余额,但是学校有个规定,饭卡余额少于5元就不能买东西,现在有n件商品,每件商品都有一个价格。要求买好商品后余额最少。         题目链接   HDU 2546 饭卡         看到题目就想到了背包问题,在一个m-5的背包里尽量装满东西,装满后放最后一个物品,解肯定在放完这个物品之后。 最直接的想

Jackie_Zhu的专栏 1597

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

饭卡 HDU - 2546

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

Are_you_ready的博客 291

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HDU 2546 饭卡 0-1背包

回顾下背包的问题先来最简单的0-1背包,HDU 2546 很裸的0-1背包。 饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9005    Accepted Submission(s): 3089

凌风 1498

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdu 2546饭卡 01背包问题

hdu 2546 题目的连接如下: http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 23950    Accepted

狮子淡泊名利 746

hduoj 饭卡 java_饭卡 HDU - 2546

饭卡 HDU - 2546原题链接考察:01背包这道题懵逼半天,看了大佬的代码终于懂了点思路:这道题是和购买顺序有关的,我们先拿出最贵的菜,同时余额拿出5元,在剩余的余额尽可能买总和贵的菜.买完最后余额拿出的5元再买最贵的菜,这就是正解了....也因为这道题搞明白了点01背包的板子.f[i][j]表示在j余额条件下,前i个物品所能达到的最大价值.这道题如果设置f[i][j]==余额的话,表示的是在...

weixin_35241897的博客 265

hdu 2546 饭卡

hdu 2546 饭卡         01背包... #include #include #include using namespace std; #define MAX 1005 int dp[MAX], c[MAX]; int n, v; inline int max(int a, int b) { return a > b ? a : b; } inline void

happen_zhang 644

HDU 2546 饭卡

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546

n-1 739

HDU 2546 饭卡(01背包)

题目链接: HDU 2546 饭卡 题意: 中文题意。 分析: 问题的核心就是在钱总数小于5之前尽可能的使金钱总数最小,然后用生下的>=5的钱去购买最贵的物品。 先将所有商品按价格排序,然后将最贵的保留,因为一定会购买它!而且最优的情况是用5元钱购买它! 所以问题就变成如何用v-5元钱去购买剩下的n-1件商品来获得最大总价值,这就是典型的01背包了。 注意: 当初始v<5时,什么都

ramay7 549

hdu 2546 饭卡(01背包)(变化了一小下)

hdu 2546 饭卡分析01背包的变种,题目就是说,有n种菜,饭卡剩m元,如何使饭卡剩的钱最少,当然有个限制,就是可以进行这次购买的前提是m要大于等于5元。 感觉自己思维还是太死了,就是因为这个大于5元的限制想了半天,其实可以想到,在还剩5元时,只要再买一次价钱最大的菜就可以了,那问题就转化为在有m-5元时,如何花最多的钱,也就是01背包问题。如果这样,就不用每次转换时考虑是不是大于5元了。要学

天道酬勤 355

hdu 2546 饭卡 01背包 Java

hdu 2546 饭卡 贪心 加 01 背包 因为要使最后的余额最少,而且还需要大于等于5元才能购买,所以倒数第二次购买后的钱一定要大于或等于 (余额-5),因此背包容量就是 (余额-5)。 把最贵的留到最后进行购买。 import java.util.Arrays; import java.util.Scanner; /** * @author wangshaoyu */ public class Hdu2546 { public static void main(String[] arg

weixin_46621409的博客 264

hdu_2546_饭卡(01背包)

题目连接:hdu_2546_饭卡 题意:中文,不解释 题解:先拿5元来买最贵的,最后就是一个01背包,这里也算用到贪心的思想 #include #define F(i,a,b) for(int i=a;i<=b;i++) using namespace std; inline void up(int &x,int y){if(x<y)x=y;} int n,a[1001],dp[1200

bin_gege的博客 319

HDU 2546 饭卡 基本的01背包

HDU 2546 饭卡 Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 2546 Appoint description: Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余

fans_ac的博客 411

【01背包】HDU 2546 饭卡

HDU 2546   饭卡                                                                                                                       饭卡Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/3276...

荷叶田田 378
上一篇: poj1836 Alignment
下一篇: 01背包解析
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值