区间贪心问题
题解
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1000000;
struct space{
int left,right;
}S[maxn];
bool cmp(space a,space b){
if(a.left!=b.left){
return a.left>b.left;
}
else{
return a.right<b.right;
}
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>S[i].left>>S[i].right;
}
sort(S,S+n,cmp);
//ans为不相交区间的个数,lastX记录上一个被选中区间的左端点
int ans =1;
int last_left=S[0].left;
for(int i=1;i<n;i++){
if(S[i].right<=last_left){
ans++;
last_left=S[i].left;
}
}
cout<<ans<<endl;
return 0;
}