hud_2037-今年暑假不AC
/*题目大意:给出节目的开始和结束时间,求最多能看多少完整节目 *解题思路:首先按节目时间排序,因为必须是完整节目,所以要选取上一节目结束后 *最早开始并尽快结束的节目。 */#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define MAX 101struct 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;}