hdu 2546(01背包)

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

饭卡

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


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
 

Source
 

Recommend
lcy


  //为了得到卡上的最小的余额,大于5元可以买任何东西 我们可以先把余额减去5元把剩余的钱和物品(除最大价值)01背包  就可以得到剩余的钱可以最多买val的菜   总的钱-val-最大价值的物品=剩余的钱
#include <bits/stdc++.h>
using namespace std;

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


【题解】hdu2546饭卡 01背包变形 题目链接 感觉还是01背包……如果金额小于5元直接输出,否则先拿出5元买最贵的菜。f[j]表示还剩余j元时所能产生的最大花费 //01背包问题 //当金额小于5直接输出 //金额大于等于5就先拿出5元买最贵的菜,然后变成一个01背包 //f[j]表示还剩j元所能产生的最大花费 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;... 阅读详情

相关推荐

CXL3.0 CDAT(Coherent Device Attributes Table)

在说明CDAT之前,先讲一下CXL中的DOE类型:CXL协议里定义了两种DOE的类型,一种是Compliance就是合规性测试的内容,还有一种就是CDAT(一致性属性表)Memory_Info_Valid是CXL设备的内存配置完成标志,位于DVSEC(Designated Vendor-Specific Extended Capability)的CXL Range X Size Low寄存器中(X为1或2)。

Summer的博客 1437

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

【蓝桥杯——单片机学习笔记】十三.点阵(STC15F2K60S2)

一.点阵内部图 点阵的有两种,分为共阴和共阳(与数码管类似,后续代码根据共阳点阵编写)。点阵的控制主要是每行和每列电平的控制。如图,以共阳为例:若要使左上角的灯亮,则第一行输出高电平(其他行均为低电平),第一列输出低电平(其他列均为高电平)。 二.原理图 与数码管共用接口,所以数码管和点阵的显示只能选一个使用! 原理图中点阵的接口R5即代表第5行(Row),C8即代表第8列(Column)。通...

默默无闻小菜鸡的博客 2011

01背包 hdu2546 hdu2602

01背包的思想呢,也是dp的思想吧,把问题转化为子问题求解,不断继承状态得到最后的答案。 贴个公式:f[i][v]=max(f[i-1][v],f[i-1][v-c[i]]+w[i]);f[i][v]表示的是前i件物品放在一个容量为v的背包里可以获得的最大值。我也不明白这个二维数组的实用性在哪里,我都是写一维的数组,也弱的只会一维的勒,然后一维的话,两个for循环,第一个循...

127

图相似度模型(论文篇)

图相似度模型

weixin_43702653的博客 5748

25年PINN创新点大盘点!

在科研论文的激烈角逐中,想轻松产出高含金量成果?物理信息神经网络(PINN)堪称“宝藏研究方向”,是冲击高分区论文的绝佳赛道!对于渴望发表优质论文的科研伙伴,这三大研究路径值得重点关注。首先是自适应PINN,在PINN训练过程中,物理方程与实测数据间的矛盾常常导致权重调节困难,而恰好直击这一痛点,是极具价值的研究方向。其次,同样前景广阔,传统多物理场同时训练效果欠佳,如今分阶段训练方法脱颖而出,成效显著且竞争较小。最后,探索及多任务学习等技术的融合,能实现优势叠加,碰撞出创新火花。

Malaai的博客 1970

HDU 2546(贪心+01背包)

HDU 2546 http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路 先贪心以下,然后剩下的再用01背包求解即可。 1、如果余额<5,不够买,那么直接输出m即可。 2、如果余额>=5,那么先拿出五块钱来买价格最大的菜。 然后剩余的钱再用01背包算能花掉的最多的钱。 然后结合起来节课 代码 #include <iostream>...

Authur_gyc 423

告别串口升级!手把手教你为STM32H750的W25Q32制作MDK下载算法(QSPI篇)

本文详细介绍了为STM32H750的W25Q32制作MDK下载算法(QSPI篇)的完整流程,帮助开发者告别低效的串口烧录方式。通过定制下载算法,可实现20倍以上的烧录速度提升,支持完整的调试功能,显著提高开发效率。文章涵盖环境准备、核心算法实现、性能优化及常见问题解决方案,适合嵌入式开发者参考。

weixin_30735745的博客 403

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

狮子淡泊名利 747

Ubuntu零基础教学-如何把Ubuntu20.04界面从英文修改为中文?| 超级详细,建议收藏

带你如何把Ubuntu20.04界面从英文修改为中文?| 超级详细,建议收藏

**My Coding Family** 5340

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

qq_44224801的博客 2068

HDU 2546:饭卡(01背包)

链接:https://vjudge.net/problem/HDU-2546 题目 输入 输出 样例输入 1 50 5 10 1 2 3 2 1 1 2 3 2 1 50 0 样例输出 -45 32 思路 正常的01背包。 特别的点在于这个背包很赖皮,只要你的余额大于5你就可以买任何东西,还不用还。 (这就很值得某些软件学习一下) 但是如果你余额小于5的话你就什么都买不了(就算商品价格小于5),真就人上人消费呗~ 既然如此,这题就简单了。输入余额后先判断是否小于5,小于就直接输出v(死穷鬼,连5元

Mr.RainsdRop的胡思乱想 264

MATLAB点云处理总目录

点云处理研究学习

weixin_44329757的博客 2556

HDU 2546 饭卡(01背包)

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

ramay7 549

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HDU 2546+2602 01 背包

HDU 2546+260 分析:这两道题目均为01背包典型的题目,直接套用公式即可。但是对于初学者来说,对于公式的理解上还是有一定难度的。 公式f[i][v]

Singular__point的博客 576

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

hdu 2546(01背包)

http://acm.hdu.edu.cn/showproblem.php?pid=2546 分析:本题主干还是简单的01背包问题, 只是加了一个条件:只要饭卡里的钱》=5就可以买任何价格的菜,反之如果钱少于5元则什么也不能买,即便那个菜根本不需要5元;             既然如此,便用5元最后来买最贵的菜最划算了…… 代码: //hdu 2546 饭卡 #include

naturelan的专栏 975

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

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

天道酬勤 355

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

HDU 2546 饭卡 (动态规划01背包)

http://acm.hdu.edu.cn/showproblem.php?pid=2546 先用5元钱买最贵的东西,然后用剩下的钱买价值最大的东西,也就是01背包问题。 先进行排序,找出最大的,然后对剩下的商品进行动态规划,而顺序不影响。 参考博客:http://blog.youkuaiyun.com/juststeps/article/details/8714303 #include #

Benjamin_Z的博客 1364

HDU 2546 饭卡【01背包变形】

HDU 2546 饭卡 分析: 每种菜可买一次或者不买,所以是01背包 余额m&lt;5,只能买价格&lt;=余额的菜       无法购买 余额m=5,买最贵的菜 余额m &gt;5,先用(h=m-5)去买菜,再用5去买最贵的菜。h视为背包容量,菜的价格a[i]视为重量w和价值c。 //AC #include&lt;iostream&gt; #include&lt;algori...

不甘 195

HDU - 2546 饭卡 【01背包+排序】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 题目问的是最小容量,而且容量可能会负数,我们可以换个角度解决问题,比如题目允许的容量是 5~m,我们可以把容量设置成 m~2*m-5,这样做的好处是能把可能为负数的结果变成正数,那么就可以用01背包求解问题(dp[容量]),求的是最大值。 另外需要给价格排序,比如下面这个两个数据,自己可以...

Y390d的博客 350

hdu2546 01背包

如题:http://acm.hdu.edu.cn/showproblem.php?pid=2546 当饭卡里的钱数不足5元 什么都不能买,直接输出钱数 否则 升序排序,max是最之前的菜的钱数 钱数先减去5,然后01背包在(1.。。n-1)个菜中计算最高花费,最后输出m+5-f[m]-max   #include #include #include #include using

zht的专栏 429

动态规划专题 01背包问题详解 HDU 2546 饭卡

http://www.cnblogs.com/fancy-itlife/p/4394398.html 动态规划专题 01背包问题详解 HDU 2546 饭卡 我以此题为例,详细分析01背包问题,希望该题能够为大家对01背包问题的理解有所帮助,对这篇博文有什么问题可以向我提问,一同进步^_^ 饭卡 Time Limit: 5000/1000

糖分 480
上一篇: hdu 5656 dp
下一篇: hdu 2159(二维完全背包)
真的好难
博客等级 码龄12年 5粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值