贪心算法总结

一、贪心区间问题:

(1)贪心问题的区间问题通常是要按照区间的一端来进行排序,这样做是因为我们排好序后一般都要遍历一遍整个数组,按照端点的一端排序能让 前面的不会影响后面的 或者 后面不会影响前面的 

(2)至于选择哪一个端点排序,我认为都应该是可行的(其实是我瞎猜的)

(3)区间问题通常需要我们去更新某一段区间或某一个值,那么我们就先要找好初始化的情况,再去更新

(4)区间贪心问题的证明方法一般是由两个式子 :

                      ​​​​​​  Ans= max(cnt)\geq cnt        Ans=min(cnt)\leq cnt

       来推出最后的结论(通过我们的算法得到的最后结果与最优解相同): Ans=cnt

        下面放几道区间的题目:

       AcWing 905. 区间选点 (已笔记)        AcWing 906. 区间分组 (已笔记)             AcWing 907. 区间覆盖 (已笔记)                               ​​​​

二、绝对值不等式问题: 

绝对值不等式问题是用到了绝对值相加和相减的数学性质,一般用于求解距离问题                          贴一道经典题目:     104. 货仓选址

三、排序不等式:

通常这类需要排序的贪心问题都有一个或两个的属性,需要按照某一特性进行排序,那么如何选择根据什么特性来排序呢?有一个很重要的结论:一般而言,贪心排序可以只由两个的排序方案来得到整个数组的排序方案,也就是以小推到大

详细步骤:

(1)只取两个元素

(2)将题目所要求的值分别用这两个元素的属性表示出来

(3)通过“如果某一个更优”的原则来列出不等式

贴几道题目:        125. 耍杂技的牛                913. 排队打水

四、树的层序遍历贪心问题:         

这个不好说明,直接放题目:        AcWing 4793. 危险程度(已做笔记)

六、总结一下:  

贪心常用的证明方法有调整法反证法数学归纳法,还有一种大于等于、小于等于法(我也不知道怎么表示)

最后贴一道题:        1054. 股票买卖(一道不规则的贪心,值得了解)

你可能感兴趣的:(算法)