贪心的几个经典题型
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当做起点
重复进行上面说的步骤就可以了
设点为(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当做起点
重复进行上面说的步骤就可以了
相关文章推荐
- 几个经典的贪心区间问题之区间调度hdu2037
- Hrbust 2171 最佳工厂【贪心+优先队列】经典题型
- URAL 1826 贪心经典题型
- POJ 3253 Fence Repair(经典贪心问题)
- 动态规划,poj几道基础经典题型,重要!
- NYOJ 乘船问题+经典贪心+轻的和重的搭配
- Linux下几个经典面试的笔试题
- 《IIS 6的几个经典问答》
- 经济学的几个经典故事
- POJ:1094-Sorting It All Out(拓扑排序经典题型)
- 几个经典递推关系
- 二分查找经典题型
- SourceInsight几个经典用法
- 几个经典的故事
- Stock 贪心经典 Zoj2921
- C++比较经典的几个宏
- 几个非常经典的对“数据仓库”的解释
- HDU 1789 经典贪心(附带sort及qsort)
- 可用贪心算法解决的几个基本问题
- 贪心的几种题型