奥赛一本通 1422 活动安排

1422 活动安排

题目大意

给定 $n$ 个区间,求至多可以选择多少个互不相交的区间。

知识要点

排序、贪心

解题思路

将所有区间按右端点排序,根据贪心的思路,右端点越靠前的越应该优先选择。

参考代码

#include <bits/stdc++.h>
using namespace std;

struct Region {
    int s, f;
} E[1005];
bool cmp(Region a, Region b) {
    return a.f < b.f;
}
int main() {
    int n, t = 0, ans = 0; // t 记录当前的右端点 
    scanf("%d", &n);
    for(int i = 0; i < n; i++) scanf("%d%d", &E[i].s, &E[i].f);

    sort(E, E + n, cmp);
    for(int i = 0; i < n; i++) if(t <= E[i].s) ans++, t = E[i].f;
    printf("%d\n", ans);
    return 0;
}
posted @ 2026-08-28 15:22  萧西待水  阅读(2)  评论(0)    收藏  举报