AcWing 908. 最大不相交区间数量

//1.将每个区间按右端点从小到大排序
//2.从前往后依次枚举每个区间,如果当前区间中已经包含点,就直接跳过,否则,选择当前区间的右端点
//选右端点的话,可以尽可能的包含在多个区间里
//那么选的点的数量,就是最大的不相交的区间的数量
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
struct Range {
    int l, r;
    bool operator< (const Range &W)const {
        return r < W.r;
    }
} range[N];
int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i ++ ) scanf("%d%d", &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) {
            res ++ ;
            ed = range[i].r;
        }
    printf("%d\n", res);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/QingyuYYYYY/p/11909462.html