贪心容易写,也容易错……
贪心算法指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或较优解) 的一种解题方法。
贪心思想的本质是每次都形成局部最优解,换一种方法说,就是每次都处理出一个最好的方案。只能用来求某些最大或最小解问题;
如果有贪心性质存在,那么一定要采用贪心算法。因为它容易编写,容易调试,速度极快,并且节约空间。
几乎可以说,它是所有算法中最好的。
然而,贪心算法并不总是正确的,因为并不是每次局部最优解都会与整体最优解之间有联系,往往靠贪心生成的解不是最优解。一般情况下,构造出贪心策略后要进行证明。
贪心还是一种思想。 运用贪心思想,主要是为了分析出问题的一些本质,或者分析出低效算法的一些冗余。
合理地运用贪心思想,可以帮助运用其他算法解决问题。
能确定某些问题的可行解的范围,特别是给搜索算法提供了依据
大体范围:最优化问题(具有最优子结构),和dp有相似的地方
可能结合排序,堆,二分等
一.调整性问题(考虑相邻两元素,互相交换对其他无影响,且交换能得到较优解)
[Usaco2007 Demo] Cow Acrobats
[Usaco2007 Jan] Protecting the Flowers
二.暴力扫过去后堆维护(发现新来的比过去的优,就删掉原来的,加入当前的)
[JSOI2007] 建筑抢修
[BZOJ&&Poi2012] Warehouse Store
[Usaco09Open]
三.结合二分,判断可行性问题
四.部分贪心(部分指对问题影响影响较小的部分),其他用正确的算法
五.随机化