标签: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