贪心常见题型
- 按某种顺序排序后,然后逐个取(sort,多关键字排序,重载小于符号)
- 每次取集合中的最大/最小,更新答案(使用priority_queue)
贪心在最优子结构的问题中尤为有效(最优子结构的意思是问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。)
贪心与dp的区别,贪心对每个子问题的解决方案都做出选择,不能回退。dp会保存以前的运算结果,并根据以前的结果进行选择,有回退功能。
有的时候,贪心并不是正确的,比如01背包问题,贪心就会出错。贪心问题特别像逻辑题,方法很简单,但是证明却很难。考场上,不需要会证明。
贪心法证明的常见方法
- 反证法(假设、调整、做差)
- A>=B, A <= B, 证明A=B
- 数学归纳法
例题
例题,【例6.1】排队接水
//排序类型
例题,【例6.3】删数问题(Noip1994)
//贪心:干掉下降子序列第一个数字。或者模拟取找
例题,【例6.5】活动选择
//排序类型,数轴上的问题
例题,【例6.6】整数区间
//排序类型,数轴上的问题,会用到双指针方法
例题,最大子矩阵
//纯暴力会T,学习使用二维前缀和