hud_2037-今年暑假不AC
[cpp]
/* 题目大意:给出节目的开始和结束时间,求最多能看多少完整节目
* 解题思路:首先按节目时间排序,因为必须是完整节目,所以要选取上一节目结束后
* 最早开始并尽快结束的节目。
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX 101
struct node {
int x, y;
} a[MAX], b[MAX];
bool cmp(node a, node b) {
if( a.x != b.x ) {
return a.x < b.x;
} else {
return a.y < b.y;
}
}
int main(int argc, char const *argv[]) {
#ifndef ONLINE_JUDGE
freopen("test.in", "r", stdin);
#endif
int cnt, ans;
while( scanf("%d", &cnt), cnt ) {
ans = 0;
for(int i = 0; i < cnt; i ++)
scanf("%d %d", &a[i].x, &a[i].y);
sort(a, a + cnt, cmp);
for(int i = 0; i < cnt; i ++) {
if( !i ) b[++ans] = a[i];
else {
if( a[i].x >= b[ans].y ) { //开始时间大于上节目结束时间,新增
b[++ans] = a[i];
} else if( a[i].y < b[ans].y ) { //如果结束时间小于上节目结束时间,替换
b[ans] = a[i];
}
}
}
printf("%d\n", ans);
}
return 0;
}
补充:软件开发 , C++ ,