分析
要将n个区间化为不相交的区间,先将区间按r排序,然后每次遍历,如果l比当前ed小,那么更新ed,结果+1。
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
struct Range{
int l,r;
bool operator<(const Range &w)const{
return r<w.r;
}
}range[N];
int n;
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>range[i].l>>range[i].r;
sort(range,range+n);
int res=0,ed=-2e9;
for(int i=0;i<n;i++){
if(ed<range[i].l){
res++;
ed=range[i].r;
}
}
cout<<res<<endl;
return 0;
}