# 安排教室## 题目描述学校仅有的一间社团活动教室需要同学申请通过后才能使用同一时段内只有一个社团可以使用社团活动教室。有 $n$ 个社团分别提出了申请每个社团想使用的时段都是连续的第 $i$ 个社团申请的使用时段为从第 $a_i$ 节课上课时到第 $b_i$ 节课下课时的这段时间。显然如果有两个社团的申请时段有重合那么他们的申请不可能都被通过。现在由你来决定每个申请是否被通过问最多有多少个社团
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int n;
struct Seg{
int a, b;
} c[N];
// c[] 存储每个申请的信息
bool cmp(Seg x, Seg y){
return x.b < y.b;
}
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d%d", &c[i].a, &c[i].b);
sort(c + 1, c + n + 1, cmp);
int ans = 0, lim = 0;
// ans存储答案,即能通过的申请个数
// lim记录“最右界”,即目前通过的申请使用教室最晚到哪节课
for(int i = 1; i <= n; ++i){
if(c[i].a >= lim){
++ans;
lim = c[i].b;
}
}
printf("%d\n", ans);
return 0;
}
原文地址: http://www.cveoy.top/t/topic/h6d9 著作权归作者所有。请勿转载和采集!