贪心题解

8469特殊密码锁

如下分析:

  1. 对于一个密码锁,最多只会按下一次,因为按两次的结果和不按该位置的结果是一样的。

  2. 从左往右处理,如果前面0~i-1位置和目标相同,则考虑i位置:

  • 若i位置和目标不同,则按下i+1就可以

  • 若i位置相同,则不用按,直接到下一位i+1

    (意思就是如果前0~i-1把锁已经处理好,则第i+1把锁按下与否就确定了

  1. 对于第一把锁需要单独讨论,因为它没有前驱锁,所以第一把锁可以按下,也可以不按下(第一把的按下与不按下会触发不同的分支),比较这两种方法产生的结果,取最优解。

链接

2469电池寿命

考虑3个电池

只用考虑寿命最长的电池剩余电池总时间的比较:

  1. 若最长的电池比剩余电量之和要小,则最终用电时间等于总电量之和/2(所有的电量都会用完,具体分配情况是:由于a+b<c,则可以让a和b轮流消耗c直到c用完且a和b剩余电量相等,这样a和b剩下的也能够刚好用完)

  2. 若最长的电池比剩余电量之和要大,则最终用电时间等于剩余电池电量之和。(a+b<c,最优情况就是a+b)

若电池数>3则将最长那个电池提出来,剩下的分成任意两组(这两组可以看成两个电池),根据上述讨论,依然有:

1.若最长的>剩余之和,结果等于剩余之和 。

2.若最长的小于剩余之和,则剩余的可以把最长的消耗光,然后通过某种特殊的消耗组合,使得在剩下的里面依然有这种关系,最终可以消耗完,结果等于全体总和/2 .

若电池数==2,也有这种最长和剩余的关系。

链接

2704寻找平面上的极大点

直接用暴搜O(n^2)会超时,需要优化一些。首先按照x从小到大排序,对于相同的x,y按照从小到大排序。 然后在排好序的数组中从右往左遍历(这样保证了右边会有x大于该点),记录右边y的最大值,如果该点的y大于y的最大值,则该点就是极大点。

19装箱问题

6*6的箱子放入边长为1,2,3,4,5,6的正方形。思路当然是优先处理放入大的箱子,具体处理过程如下。

对于边长为4,5,6的,一个箱子只能放一个正方形,然后尽量将小的正方形(如果这时还有小的正方形)放进去。

对于边长为3的,要分别考虑4种情况:一个箱子里有1,2,3,4个3 * 3的正方形,再讨论放入对应能容纳的更小的正方形(优先放2 * 2,再放1 * 1)

如果这之后还有22和11,就先全部放入2 * 2,剩下的再放1 * 1.

链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值