奥赛一本通 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;
}

浙公网安备 33010602011771号