首页 > 代码库 > 一类区间选择问题的贪心策略

一类区间选择问题的贪心策略

有一类问题在区间上的选择问题有如下特征:
  1. 1. 每个选择之间不交叉
  2. 2. 区间元素可以在某个选择中,也可以不在任何选择中
  3. 3. 最大化选择的个数
对于这类问题,我们可以考虑采取贪心策略。具体来说,对于区间从左到右考虑,每次发现一个可行的组合就选择,保证右区间尽可能小。
 

 

Codechef CHEFPRAD
[给a,b数组,数组内部元素相对位置不变,但ab之间的元素可以同时位移一个距离。每个元素可以匹配和它距离小于y的对面的点,求最大匹配]
[观察到最优匹配方案一定是落在b数组某个元素的上边界上(如果没有,则稍加调整就可以得到)。于是我们可以花O(n^2)的代价枚举位移。对于枚举的那个匹配上下可以分别贪心]
[如果用dp就会tle]

 

codeforces 467E
[给一个序列,让你挑出最多的数,使得每四个挑出的数呈现ABAB的形式]
[显然我们从左到右遇到一个ABAB就贪心地选择它。如何判断出现?对于AXXXXXXA,我们可以把中间的X用A标记。当某个被标记地元素再次出现时,我们就得到了一组解]
[如果不贪心,用DP的思路考虑就会非常na?ve。每次最多往之前相同的数字跳3次,每次需要用可持久化线段树计算有没有pre落在区间的左边。]

 

 

<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Times New Roman"; color: #454545; min-height: 15.0px } li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #454545 } span.s1 { } span.s2 { font: 12.0px Helvetica } span.Apple-tab-span { white-space: pre } ol.ol1 { list-style-type: decimal }</style>

一类区间选择问题的贪心策略