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

区间分组

时间:2020-03-22 01:47:42      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:http   max   for   amp   queue   组合   else   class   print   

# 题意
N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,求最小的组数

# 题解
1.将所有区间按照左端点从小到大排序
2.从前往后处理每个区间,判断能否将其放到某个现有的组中
1.不存在这样的组开一个新的组,放入
2.存在这样的组随便挑一个将其放进去,并更新当前组的maxr

将所有分组的右端点加入小根队,每扫描一个区间的左端点,如果可以和当前右端点最小的组合并则将合并后的右端点入堆

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e5+10;
 4 struct a{
 5     int l,r;
 6     bool operator <(const a &b)const{
 7         return l<b.l;
 8     }
 9 }e[N];
10 priority_queue<int,vector<int>,greater<int>>res;
11 int main(){
12     int n;
13     scanf("%d",&n);
14     for(int i=0;i<n;i++)
15         scanf("%d%d",&e[i].l,&e[i].r);
16     sort(e,e+n);
17     for(int i=0;i<n;i++){
18         if(res.empty()||res.top()>=e[i].l) res.push(e[i].r);
19         else{
20             res.pop();
21             res.push(e[i].r);
22         }
23     }
24     printf("%d\n",res.size());
25 }

 

区间分组

标签:http   max   for   amp   queue   组合   else   class   print   

原文地址:https://www.cnblogs.com/hhyx/p/12543590.html

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