Loading

线段系列问题

推荐codevs线段覆盖系列1.2.3.4.5

线段覆盖一:

      给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数。有些线段之间会相互交叠或覆盖。请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点。所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分)。

  注:小坑点输入线段左右端点可能相反

  思想:右端点排序

    1。对于a1,a2……an中(已排序)因为a1右端点排序所以一定选——》留给后部元素更多选择;

    2。贪心思想——》右端点越往左留给后部机会越多,所以扫一遍若左端点比当前已选右端点往左跳过否则更新;

    

for(int i=1;i<=n;i++)
    {
        if(i==1){
            L=T[i].l;
            R=T[i].r;
            ans++;
            continue;
        }
        if(T[i].l<R)continue;
        L=T[i].l;
        R=T[i].r;
        ans++;
    }

如有错误及时更正

posted @ 2017-10-05 11:11  KVMX  阅读(96)  评论(0)    收藏  举报