码迷,mamicode.com
首页 > 其他好文 > 详细

区间合并

时间:2021-05-23 23:02:19      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:struct   排序   oid   str   lse   端点   交集   for   不能   

3. 区间合并

原理:区间排序左端点有交集的区间可以合并

struct OI{int l, r;}num[N];

inline int cmp(OI a, OI b){return a.l < b.l;}  //按照左端点排序

sort(num+1, num+1+n,cmp);

void combine(){
    int st = num[1].l, ed = num[1].r;res++; //起始作为一个区间, 所以res起始为 1 个区间
    for(int i = 2; i <= n; i++){
        if(num[i].l <= ed)       // 可以合并成一个区间
            ed = max(ed,num[i].r);
        else
            st = num[i].l, ed = num[i].r, res++;// 不能合并成一个区间
    }
}

区间合并

标签:struct   排序   oid   str   lse   端点   交集   for   不能   

原文地址:https://www.cnblogs.com/xswlQAQ/p/14727526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!