hdu 2390
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2390
题意:输入n个运动会项目的举办天和起止时间,不能同时看两场,问最多能看多少场。
mark:经典贪心,注意每组输出后面都有一个空行。
代码:
1 # include <stdio.h> 2 # include <stdlib.h> 3 4 5 typedef struct NODE{ 6 int s, t ; 7 }NODE ; 8 9 10 NODE sche[50010] ; 11 12 13 int cmp(const void *a, const void *b) 14 { 15 NODE* p = (NODE*)a, *q = (NODE*)b ; 16 return p->t - q->t ; 17 } 18 19 20 int main () 21 { 22 int T, d, n, i, ans, end ; 23 int nCase = 1 ; 24 scanf ("%d", &T) ; 25 while (T--) 26 { 27 scanf ("%d", &n) ; 28 for(i = 0 ; i < n ; i++) 29 { 30 scanf ("%d%d%d",&d,&sche[i].s,&sche[i].t) ; 31 sche[i].s+=d*10000, sche[i].t+=d*10000 ; 32 } 33 qsort(sche,n,sizeof(NODE), cmp) ; 34 ans = 0, end = 0 ; 35 for(i = 0; i < n ; i++) 36 { 37 if (sche[i].s >=end) 38 { 39 ans++ ; 40 end = sche[i].t ; 41 } 42 } 43 printf ("Scenario #%d:\n", nCase++) ; 44 printf("%d\n\n", ans) ; 45 } 46 return 0 ; 47 }