原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428
思路:贪心,按开始时间排序,并用数组保存每个教室当前活动的结束时间
AC代码:
#include<bits/stdc++.h>
using namespace std;
struct node {
int start, end;
bool operator < (const node &n)const {
return start < n.start;
}
}nodes[10005];
int xx[10005];
int main() {
int n, cnt = 0, s, e;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &nodes[i].start, &nodes[i].end);
}
sort(nodes, nodes + n);
for (int i = 0; i < n; i++) {
int j;
for (j = 0; j < cnt; j++) {
if (xx[j] <= nodes[i].start) {
xx[j] = nodes[i].end;
break;
}
}
if (j == cnt) {
xx[cnt++] = nodes[i].end;
}
}
printf("%d\n", cnt);
return 0;
}