文章标题

来源:互联网 发布:网络调试面试题 编辑:程序博客网 时间: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&sectionid=3&problemid=3

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 预提费用取消了怎么办 小学生上课注意力不集中怎么办 工商抽查到你了怎么办 拿到商调函后该怎么办 苹果7p掉水里了怎么办 苹果7屏幕进水了怎么办 苹果5s掉进水里怎么办 苹果5s无法开机怎么办 苹果手机充不了电怎么办 苹果5s掉了怎么办 苹果6手机掉水里了怎么办 苹果5s关机丢了怎么办 苹果5s发热严重怎么办 手机开不开机了怎么办 苹果6基带坏了怎么办 苹果7基带坏了怎么办 苹果刷机1错误怎么办 4s解锁密码忘了怎么办 4sid密码忘记了怎么办 苹果4忘记id密码怎么办 枣核吃到肚子里怎么办 芝麻分贷款不还怎么办 德国bm家不发货怎么办 金士顿u盘坏了怎么办 箱子的密码忘了怎么办 拉杆箱密码忘了怎么办? 拉杆箱忘了密码怎么办 拉箱密码忘了怎么办 飞行箱密码忘了怎么办 旅行箱密码乱了怎么办 手机sdk版本过低怎么办 cad标注数字太小怎么办 绿萝花肥施多了怎么办 大疆4云台抖动怎么办 三证合一后社保怎么办 三证合一后税务怎么办 身份证在深圳丢了怎么办 吃虾过敏皮肤痒怎么办 吃大头虾手掌痒怎么办 孩子支气管炎咳嗽老不好怎么办 抻筋了 很疼怎么办