有一篇很好的贪心算法入门文章跟大家分享: http://blog.csdn.net/qq_32400847/article/details/51336300 可以看完这篇文章再去做题
这里我主要总结一下自己最近做贪心题目的情况:
从上个月7号开始吧,我就开始刷贪心的题了,其中不乏有些难度很高的题(对于我这菜鸟而言),百思不得其解后看了解题报告,但是也让我学到了很多,肚子里总要先有点墨水..还是回归正题,说说那些让我印象深刻的题吧。
在我看来,贪心最重要的是选择一个最优的策略,然后循环遍历,按照最优策略判断,成功的取,不成功的舍去,求得每个子问题的最优就可以构成最优的结果.(在很多情况下贪心都需要用到排序,如果嫌麻烦可以调用头文件algorithm中的sort,qsort函数排序)
①最典型的例子就是 会场安排问题nyoj14, 按节目结束时间排序,再遍历每一个节目时,有选择地更新结束时间,计算出最大节目数
可分割背包问题,按单位价值排序,每次选择单位价值大的物品。有道题跟可分割背包类似,但是需要考虑多一点点路程成本的问题,nyoj248
有几道也是比较容易找出最优策略的题目: nyoj824 nyoj236 nyoj71 nyoj91(需要有点小技巧)
②区间覆盖问题, poj1328(典型),nyoj6 nyoj1036(比较难理解的是题意…看不懂算了) nyoj891 建议可以先做poj1328,后面的两道也就可以想出来了。
③二分+贪心: 通过题目可以已知结果所在的范围,然后又有某个限定条件的存在,这个条件可供我们作为贪心的检验条件 nyoj586 nyoj914 poj3122 poj3258 hdu4190
④寻找最大数系列(要在某个范围内贪心): nyoj448 nyoj1057 nyoj1170
⑤需要很细心地贪心策略 nyoj364(我有试着用二分图但是超时了,选择贪心策略去做吧) nyoj791(记得要充分利用所有的油漆) hdu1735
⑥很难但是很有学习价值的题目: nyoj30(列举出每种情况,解题报告一句话让我恍然大悟,贪心策略很巧妙) nyoj1309(看了解题报告很久才懂的题目,好题) hdu4415(难) hdu3697(贪心+枚举)
⑦策略好找,但是需要小技巧防止超时的题目: hdu4544 hdu4864
⑧以小见大,举例子去找到排序策略,体会一下这三道题,nyoj47(经典过河)hdu4296 hdu4442 nyoj1218(涉及高精度运算)
⑨如何将a配凑成b,用 ‘就近原则’ nyoj915 hdu5821
nyoj http://acm.nyist.net/JudgeOnline/problemset.php hdu http://acm.hdu.edu.cn poj http://poj.org/
这里只是列举了一些题目,如果你是刚学贪心算法正在找题目做的同学可以先刷完这些题,我的博客也有部分题目的题解,希望有所帮助.
PS:因为huffman树,迪杰斯特拉算法,最小生成树算法,二分图最大匹配(匈牙利算法)和二分图最佳匹配(KM算法) 也用到了贪心思想,所以我也看了一下,下面都是一些很好的文章:
huffman树: http://blog.csdn.net/ns_code/article/details/19174553 poj3253 nyoj801
迪杰斯特拉算法: http://www.cnblogs.com/Braveliu/p/3458671.html poj1502
最小生成树算法: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html#commentform
二分图最大匹配:http://blog.csdn.net/dark_scope/article/details/8880547/ hdu2063 hdu1281 poj1274 poj1469
最佳匹配: http://www.cnblogs.com/Lanly/p/6291214.html#3738044
/2017/8/11 我要飞,多远都不会累