题目:
题解:
按左端点排序后,用已有区间的最大右端点来贪心合并后面的区间。
代码:
#include<bits/stdc++.h>
using namespace std;
pair<int,int>q[100010];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d%d",&q[i].first,&q[i].second);
sort(q,q+n);
int ed=-2e9;
int ans=n;
for(int i=0;i<n;i++){
if(ed>=q[i].first)ans--;
//用已有区间的最大结尾来贪心
ed=max(ed,q[i].second);
}
printf("%d",ans);
return 0;
}