[贪心专题]A.看电视
2017-10-13 20:26
169 查看
问题 A: 看电视
时间限制: 1 Sec 内存限制: 32 MB
题目描述
暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗?
输入
输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数。接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。
当n=0时,输入结束。
输出
对于每组输入,输出能完整看到的电视节目的个数。
样例输入
12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9 0
样例输出
5
题目解释
中文题就不解释题意啦!简单说一下做法吧:为了让小明看到更多的电视节目,每个节目结束时间越早,后面能看的节目数量相对就会更多,因此可以先对数据进行一次排序,按照结束时间由早到晚排,然后比较当前结束时间与下一个节目的开始时间是否冲突,不冲突则计数加一,最后输出计数就完成啦!
具体代码
#include<stdio.h>#include<stdlib.h>typedef struct tv{ //建立结构体,包含开始时间与结束时间两个整型变量 int start; int end;}tv;int sort(const void *a,const void *b){ //qsort结构体排序 tv *c = (tv*)a; tv *d = (tv*)b; if(c->end != d->end) return(c->end - d->end); else return(c->start - d->start);}
int main(){ int t; while(scanf("%d", &t) && t){ struct tv A[t]; int i, n, j; //n为计数 for(i = 0; i < t; ++i){ scanf("%d%d", &A[i].start, &A[i].end); //读入数据 } qsort(A,t,sizeof(tv),sort); //对于结束时间进行qsort排序 for(i = 0, n = 1; i < t;i = j){
4000
for(j = i+1; j < t; ++j){ if(A[i].end <= A[j].start){ ++n; break; } } } printf("%d\n", n); } }
附言
这里是一个正在掉头发的咸鱼acmer!写博客就是因为太咸鱼啦 同为秃子的男盆友看不下去 说要监督我QwQ 也欢迎大家来监督哦!菜狗也想和大家一起学习!欢迎大家发现错误 尽情的指责我吧!
相关文章推荐
- 贪心专题16题
- 二分贪心专题E
- 贪心转载专题之:贪心算法介绍
- SDAU 贪心专题 10 颜料问题
- nyoj 448 寻找最大数(贪心专题)
- 贪心算法专题总结
- 贪心思维 专题记录 2017-7-21
- 二分贪心专题F
- 【贪心专题】POJ 2456 Aggressive cows && NYOJ 586 疯牛(最大化最小值 贪心+二分搜索)
- 【贪心专题】HDU 1050 D - Moving Tables (移桌子)
- POJ初级分类 贪心专题 poj1328 POJ2109 POJ 2586
- 【贪心专题】POJ 3258 River Hopscotch (最大化最小值 贪心+二分搜索)
- 【贪心专题】HDU 1051 Wooden Sticks (切割木棍)
- SDAU 贪心专题 00 搬桌子
- 贪心专题————目标第九届浪潮杯
- 【贪心专题】POJ 1323 && HDU 1338 Game Prediction (贪心)
- 【贪心专题】HDU 1052 Tian Ji -- The Horse Racing (田忌赛马)
- SDAU 贪心专题 17 小箱子
- 二分贪心专题总结
- 贪心算法专题总结