zoukankan      html  css  js  c++  java
  • 选择不相交区间(贪心:求不相交区间最多个数)

     

    选择不相交区间(转)

               数轴上有n个区间[ai,bi],要求选择尽量多个区间,使得这些区间两两没有公共点。

    贪心策略:

            按照b1<=b2<=b3…的方式排序,然后从前向后遍历,每当遇到可以加入集合的区间,就把它加入集合。(集合代表解的集合)

    证明:

           我们对a1,a2……的关系分以下几种情况考虑:

             1、a1>a2。   此时区间2包含区间1。这种情况下显然不会选择区间2,因为选择区间1会留下更多的剩余空间。

                          不仅区间2如此,以后所有区间中只要有一个 i 满足a1 > ai,i 都不要选。

                          即此种情况下,选择区间1是明智的,与策略一致。

             2、排除情况1后,一定有a1<=a2<=a3……。

                          在此条件下,如图所示,不论区间1、2的相对位置如何,选择区间1都会为以后的选择留下更大的剩余空间。

                          从而在此种情况下, 因此选择区间1也是明智的,与策略一致。   

    总得说@@:

            贪心策略:将这n个区间按bi由小到大排序,然后从前向后遍历,每当遇到不相交的区间就加入目标集合,

    遍历完成后就找到了最多的不相交区间。

  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3018567.html
Copyright © 2011-2022 走看看