十七
十七
Published on 2022-02-22 / 174 Visits
0
0

acwing905. 区间选点

acwing905. 区间选点

分析

将n个区间按右端点r从小到大排序,若每次遍历时l比上一次ed大,那么区间数+1,更新ed;

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int n;
struct Range{
    int l,r;
    bool operator <(const Range& w)const{
        return r<w.r;
    }
}range[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(range[i].l>ed){
            ed=range[i].r;
            res++;
        }
    }
    cout<<res<<endl;
    
    return 0;
}

Comment