今年暑假不AC

博主分享了一道关于合理安排观看电视节目的问题,提出了使用贪心算法进行求解。通过排序节目结束时间并逐个比较,以找到能完整观看的节目数量。文章强调贪心算法的三个关键条件,并提到不应仅为了求解而求解,要深入理解和学习。
摘要由CSDN通过智能技术生成
第三周正式开始,上周的题自己没考虑到其他的做法,感谢学长提醒,矩阵快速幂自己能做了,但还不是很熟练,就是Fibnacci Again和后面的Number Sequence,矩阵的快速幂做法会更新的,慢慢来。(想把具体的推法彻底学会之后开始更新,那时候讲解也会写的尽量详细)
闲言少叙,直接进入正题:
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)

因为是合理安排类题目(目标是能看尽量多的完整节目),所以第一反应想到的是贪心算法:

(为没学过该算法的挚友所写)
贪心算法是一种局部问题求最优解,之后总体求最优解的方式。每一步我们需要在一定的标准下做出一个最优决策。这里做出决策的标准称为贪心准则。
这里有两个重点,一是在对问题求解时,总是在当前看来最好选择的时候进行选择,二是这个选项并不是总体最优解,只是局部最优解!
也就是说得到的结果可能不是最佳答案!

而且,贪心算法必须在每一步(重点)必须满足以下条件:1、满足问题约束。2、局部最优,即该选项是当前步骤的所有可行性中的最佳选择。3、一旦选择了,就不可更改,后续的选项,也是在当前最优解的步骤下进行的。

此时我们回到题目,由于题目的意思是说第一个数据是节目的个数,后面每一组数据是写出每个节目开始到结束的时间,这里我们可以用结束的时间对各个节目进行排序,然后,从第一个节目开始,用每一个节目的结束时间比较后面一个节目的开始时间,如果后面的节目的开始时间大于前一个节目的结束时间,那么可以看的节目数加一。

如果实在看不明白,建议结合我接下来的代码看。
#include <stdio.h>
#include <string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值