找零钱——贪心

找零钱
• 有 100 元、50 元、20 元、10 元、5 元和 1 元这些面值的钱
• 求凑出 ? 元的最多张数和最少张数,要求第 ? 种面值的钱不能用
超过 ?? 张
• 多组询问,? ≤ 10^5, ??, ? ≤ 10^9

题解:

其实我们只要知道最少张数即可。

最大=凑出∑ai-x的最小方案数。max=n-min

发现,如果没有20,那么剩下的100/50/10/5/1成倍数关系可以直接贪心

如果有了20怎么办?

那么,20能用几张呢?

是否可以被50替换呢?

50*2=20*5

所以,如果最终的方案中,用了至少5张20,还剩下至少两张50,那么这一定不是最优的

所以,最终的方案必须满足如下的两个特性之一:

1.用的20<5

2.剩的50<2

可以2*5=10次枚举。

20和50的张数已经确定的话,直接贪心选择100/10/1即可。

 

转载于:https://www.cnblogs.com/Miracevin/p/9748276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值