您的位置:首页 > 其它

贪心的几个经典题型

2014-12-02 09:49 246 查看
1. 选择不想交区间问题

设点为(ai,bi)

这样的题我们首先需要初始化 先把bi按从小到大的顺序排序

然后就可以分成两种情况

① a1 > a2那么区间2就包含了区间1如果选了区间2肯定是不合适的 所有这样的情况我们只能选区间1

② a1 < a2 < a3 如果区间1和区间2没有相交 那么我们两个都可以选 因为没有影响 然后循环计算就可以了

但是如果区间2和区间1有相交的部分那么我们一定选区间1 因为区间二的b比区间1的大 对后面的区间的影响可能大一些

2. 区间选点问题

数轴上有n个闭区间(ai,bi)取尽量少的点,使得每个区间至少有一个点

受上面题的启发 我们这次也先把区间做一个初始化 把bi从小到大进行排序,如果出现包含的情况我们只考虑小区间就可以了

如果b相同的话我们把a小的排在前面 然后选取这个区间的最后一个点进行贪心 ,如果这个点在下一个区间内 那我们就考虑

下一个区间里面是否也包含这个店 这样一直循环就行

3. 区间覆盖问题

数轴上有N个闭区间(ai,bi),选取尽量少的区间覆盖一条指定线段[s,t]

这题的预处理比较麻烦些 我们首先要将[s,t],以外的部分删除因为这些点毫无意义

然后我们把a进行从小到大的顺序排序,如果a1>s无解,

如果有解 那么我们就选择s开始长度较大的区间,然后把这个区间的b当做起点

重复进行上面说的步骤就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: