贪心题解
8469特殊密码锁 如下分析:
- 对于一个密码锁,最多只会按下一次,因为按两次的结果和不按该位置的结果是一样的。
- 从左往右处理,如果前面0~i-1位置和目标相同,则考虑i位置:
- 若i位置和目标不同,则按下i+1就可以
- 若i位置相同,则不用按,直接到下一位i+1
(意思就是如果前0~i-1把锁已经处理好,则第i+1把锁按下与否就确定了
- 对于第一把锁需要单独讨论,因为它没有前驱锁,所以第一把锁可以按下,也可以不按下(第一把的按下与不按下会触发不同的分支),比较这两种方法产生的结果,取最优解。
2469电池寿命 考虑3个电池:
只用考虑寿命最长的电池和剩余电池总时间的比较:
- 若最长的电池比剩余电量之和要小,则最终用电时间等于总电量之和/2(所有的电量都会用完,具体分配情况是:由于a+b
轮流消耗c直到c用完且a和b剩余电量相等,这样a和b剩下的也能够刚好用完)
- 若最长的电池比剩余电量之和要大,则最终用电时间等于剩余电池电量之和。(a+b
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.
链接
推荐阅读
- ACSL|ACSL 美国计算机科学联赛 2016-2017 R4 摩天大楼-Skyscraper 题解
- (三)|(三) 贪心算法
- dCas9技术流程与实验问题解决方案
- 【JS 逆向百例】吾爱破解2022春节解题领红包之番外篇 Web 中级题解
- 环境安装部署|Anaconda 中升级Python到高版本以及 Solving environment问题解决
- arcgis属性表出现中文乱码问题解决
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树
- 刷题记录|【蓝桥必胜】试题 算法训练 kAc给糖果你吃-贪心排序
- #|算法设计与分析(Java实现)——贪心算法(集合覆盖案例)
- 网络爬虫抓取图片并上传到fastdfs图片不完整问题解决