hdu 2390

本文介绍了一道经典的贪心算法题目,通过合理安排观看多个运动项目的顺序来最大化可观看的项目数量。提供了完整的C语言实现代码,并解释了关键步骤。

地址: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 }

转载于:https://www.cnblogs.com/lzsz1212/archive/2012/05/23/2514153.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值