奥赛一本通 1429 线段
1429 线段
题目大意
给定 $n$ 个区间,求至多可以选择多少个互不相交的区间。(同 1422 活动安排)
知识要点
排序、贪心
解题思路
将所有区间按右端点排序,根据贪心的思路,右端点越靠前的越应该优先选择。
参考代码
#include <bits/stdc++.h>
using namespace std;
struct Line {
int a, b;
} L[1000005];
bool cmp(Line A, Line B) {
return A.b < B.b;
}
int main() {
int n, t = 0, ans = 0; // t 记录当前的右端点
scanf("%d", &n);
for(int i = 0; i < n; i++) scanf("%d%d", &L[i].a, &L[i].b);
sort(L, L + n, cmp);
for(int i = 0; i < n; i++) if(t <= L[i].a) ans++, t = L[i].b;
printf("%d\n", ans);
return 0;
}

浙公网安备 33010602011771号