文章标题
来源:互联网 发布:网络调试面试题 编辑:程序博客网 时间:2024/06/07 00:13
贪心算法之今年暑假不AC
今年暑假不AC
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2864 Accepted Submission(s): 1535
Problem Description
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%…”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
Sample Input
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
Sample Output
5
Author
lcy
Source
ACM程序设计期末考试(2006/06/07)
Recommend
lcy
用贪心算法求解:
1、首先输入节目时间(开始时间 结束时间),将节目的结束时间按升序排序。
2、排序,可用C++中的sort函数。
3、从第二组数据开始进行比较,若当前节目的开始时间小于被比较的节目的结束时间,则计数器加一,并将当前的节目作为被计较的节目组。
4、输出计数器,为可观看的节目总数。
代码如下所示:
#include <iostream>#include <string>#include <math.h>#include <cstdlib>#include <stdio.h>#include <algorithm>using namespace std;struct JieMu{ int Ti_s,Ti_e;}Totol[103];bool cmp(JieMu X,JieMu Y){ //return x.et<y.et||(x.et==y.et&&x.st<y.st); return X.Ti_e<Y.Ti_e || (X.Ti_e==Y.Ti_e && X.Ti_s<Y.Ti_s); //end time 升序 or if end time same then start time 升序}int main(){ int N; while (cin >> N && N!=0) { int i; for (i=0;i<N;i++) { cin >> Totol[i].Ti_s >> Totol[i].Ti_e; } //sort sort (Totol,Totol+N,cmp); int sum=1,point=0; for (i=1;i<N;i++) { if (Totol[i].Ti_s>=Totol[point].Ti_e) { sum++; point=i; } } cout << sum <<endl; } return 0;}
PS:
一开始写的时候,我是将数组排好序,从最后的节目组开始向前比较,若当前的节目的结束时间小于被比较的节目的开始时间,则计数器加一,并更改当前的被比较的节目。但一直是WA。。。
后来参考了别人的代码,改变了思路,可以从一开始比较,若当前节目的开始时间小于被比较节目的结束时间,则也可以达到同样的效果。
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=3&problemid=3
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 我的Android进阶之旅------>解决Your project contains error(s),please fix them
- VMware虚拟机RedHat 5 系统下ftp服务器的安装测试
- FaceNet--Google的人脸识别
- 数据结构与算法—循环链表
- 软件架构的数据流总结(二)
- 文章标题
- springMVC上传文件
- iOS 网络编程 XMPP编程
- T-SQL查询处理执行顺序
- c++运算符重载总结
- 利用 BeanUtils 实现多表单间冗余数据同步管理
- maven入门
- Android Touch事件传递机制解析
- C++运算符重载的方法详细解析