贪心的正确性证明方法这块完全参考《算法竞赛进阶指南》0x07
问题模型,维护贪心的算法或数据结构,疑难杂症里面全都是力扣上的题目链接。
相当于从问题模型、算法和数据结构这两个维度给贪心的问题建了一个二级索引,不好分类的题目放到了疑难杂症里。
参考:《算法竞赛进阶指南》0x07小节
贪心是一种在每次决策时采取当前以以下最优的策略的算法,贪心算法要求问题全局最优性可以由局部最优性导出。
这种全局最优性可以由局部最优性导出需要证明,常见的证明手段如下:
证明在任意状态下,任何对局部最优策略的微小改变都会造成整体结果变差。这种方法在排序贪心的正确性证明中常用。
证明任何对局部最优策略作用范围的扩展都不会造成整体结果变差。
证明在任意状态下,做出局部最优策略之后,在问题状态空间中的可达集合包含了作出其它任何决策后的可达集合。即:这个局部最优策略提供的可能性包含其它所有策略提供的可能性。
当前位置 i,下一步的选择范围 [i+1..i+nums[i]]
选择其中的 1 <= k <= nums[i] 使得下一步能到达的范围最远,max(i + k + nums[i + k])p=str1*str2*...*strm
在s中依次找到最左边的str1,str2,...,strm,只要能在s耗尽前都找到,就可以匹配区间问题
其它 :
删数,拼数,选数问题
括号
其它
加油站问题
哈夫曼树问题
构造性问题
重排问题
多指标规划问题
重排问题
分拆问题
区间问题
其它
子序列匹配问题
乘船问题
最小极差
其它
子序列匹配问题