诱人的宝藏

题目描述

勇敢的小明来到一个失落的村庄。他非常幸运,找到了很多宝藏和一个空的大铁箱,但是失落的村庄里有很多愤怒的僵尸。小明非常勇敢,他决定打败僵尸,然后把所有的宝藏都带回来。一场旷日持久的残酷战斗从早到晚持续,最后小明发现僵尸是不死的,不可战胜的。
但是,这些宝藏不应该留在这里。不幸的是,由于大铁箱容量的限制,小明无法携带所有宝藏。村庄里的宝藏只有两种:祖母绿宝石和蓝宝石。所有的宝石在大小和价值上都是相等的,数量是无穷的。
聪明得你,能不能考虑到箱子的大小、每种宝石的价值和大小,计算出我们的勇士小明能带回的宝藏的最大价值。

输入输出格式

输入格式
输入只有一行,包含五个整数 NS1​V1​S2​V2​,表示宝箱的大小为 N,祖母绿宝石的大小和价值为 S1​V1​,蓝宝石的大小和价值为 S2​V2​。所有整数都是正整数。整数之间以空格间隔。
输出格式
针对输入,打印出小明可以随身携带的所有宝藏的最大总值。

输入输出样例1

输入
100 1 1 2 2
输出
100

输入输出样例2

输入
100 34 34 5 3

输出
86

说明提示

1≤N≤100000

1.题目及思路分析:

  • 这道题本身其实是弱化的01背包问题,我们只需要考虑两种情况
  • 第一种先装绿宝石装到装不下,以后剩余的空间去装蓝宝石
  • 第二种先先装蓝宝石装都装不下,以后剩余的空间去装绿宝石
  • 然后我们比较这两种情况,哪一种的价值最大?输出即可

2.扩展知识:
(1)[int(i) for i in a]这句话是将列表里的所有元素转换成整形,组成新的列表再返回。

a=input()  
a=a.split()  
a=[int(i) for i in a]  
b=max((a[0]//a[1])*a[2]+((a[0]%a[1])//a[3])*a[4],(a[0]//a[3])*a[4]+((a[0]%a[3])//a[1])*a[2])#这一句就是判断那两种情况,哪一种的价值更大?  
print(b)  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值