贪心
作为一种算法常常与其他算法搭配使用,很难见到只依赖贪心一种算法的题目,但贪心发现的性质可能是构建解题思路的基础。
核心思想:交换原则,交换相邻的两项看看是否更优,并通过比较推出式子,得出结论。
- eg1.[线段覆盖]
一道很典的贪心了,先关于结束时间排序,然后能取则取,并一直往后更新。根据交换原则即可证明其正确性:对其中任意一次进行更改, 音乐会场数不变时,结束时间一定在更后面,一定可以用结束时间最早的进行替换,故该贪心正确
- eg2.[国王游戏]
因为每个人的奖赏会受到他前面所有人的影响, 难以直接贪心确定顺序。
考虑到两个性质:
- 任意两个可能的序列,都可以通过若刊词相邻的人的交换操作完成变换。
- 交换相邻两个人的顺序只会影响这两人的奖赏。
因此考虑交换两个人$i$, $j$对他们收益的影响,设$mul[i]$为$1-i$的前缀积,则每个人的收益为$\frac{mul[i]} {l[i] \times r[i]}$. 计算得到 按$l[i] \times r[i]$从小到大排序 即为最优解。还有一个注意点:本题实现要用高精度 出题人对考察知识点的奇怪偏好
- eg3. [加工生产调度]
对于n个产品, 将其分为两类,$a[i] > b[i]$ 的分为一类, a[i] \le b[i] 的分为另一类。前一类关于$a[i]$升序排序, 后一类关于$b[i]$降序排序即可。
正确性自己理性理解
小组成员:邵品渊,邵品砚,蒋佳成,顾天泽,马天翔,陈继禹