区间选点问题
来源:互联网 发布:知乎上面的神回复 编辑:程序博客网 时间:2024/05/01 17:08
问题:
数轴上有n个闭区间[ai,bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。
贪心策略:
按照b1<=b2<=b3…(b相同时按a从大到小)的方式排序排序,从前向后遍历,当遇到没有加入集合的区间时,选取这个区间的右端点b。
证明:
为了方便起见,如果区间i内已经有一个点被取到,我们称区间i被满足。
1、首先考虑区间包含的情况,当小区间被满足时大区间一定被满足。所以我们应当优先选取小区间中的点,从而使大区间不用考虑。
按照上面的方式排序后,如果出现区间包含的情况,小区间一定在大区间前面。所以此情况下我们会优先选择小区间。
则此情况下,贪心策略是正确的。
2、排除情况1后,一定有a1<=a2<=a3……。
对于区间1来说,显然选择它的右端点是明智的。因为它比前面的点能覆盖更大的范围。
所以此情况下,贪心策略也是正确的。
0 0
- 区间选点问题【贪心】
- 区间选点问题
- 贪心--区间选点问题
- 区间选点问题
- 区间选点问题
- nyoj区间选点问题
- 区间选点问题
- 区间选点问题(贪心)
- POJ1328-贪心-区间选点问题
- POJ 1328 区间选点问题
- 区间选点问题(贪心)
- 区间选点问题(贪心)
- 区间选点问题---poj-1328
- 区间贪心及区间选点问题
- 区间选点
- 10148 - Advertisement-----贪心,区间选点问题------水题
- POJ1328 区间选点问题(贪心)
- UVAlive 2519 Radar Installation (区间选点问题)
- POJ 1789 解题报告
- POJ 1042 Gone Fishing
- 3D该来的还是会来的
- C/C++中的预编译指令
- HDU 1753 大明A+B(大数加法,数组模拟)
- 区间选点问题
- 过滤器 监听器 拦截器作用
- HDU 1394 Minimum Inversion Number(线段树:单点更新,求逆序数)
- 96Unique Binary Search Trees
- DOM 扩展——JavaScript高级程序设计笔记(9)
- ZOJ 3674 Search in the Wiki(字典树 + map + vector)
- The Array ||
- 6.7Pointers to Functions
- UITextField 弹出键盘的外观(类型)设置