SDAU课程练习--problemE

problemE

题目描述

“今年暑假不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

AC代码

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<stdio.h>
  4. using namespace std;
  5. struct jiemu{
  6. int begin;
  7. int end;
  8. int time;
  9. void settime()
  10. {
  11. time = end - begin;
  12. }
  13. }a[100];
  14. bool cmp(jiemu a, jiemu b)
  15. {
  16. return a.end < b.end;
  17. }
  18. int main()
  19. {
  20. //freopen("date.in", "r", stdin);
  21. //freopen("date.out", "w", stdout);
  22. int n;
  23. int sum, flag;
  24. while (cin >> n&&n)
  25. {
  26. flag = 0;
  27. sum = 1;
  28. for (int i = 0; i < n; i++)
  29. {
  30. cin >> a[i].begin >> a[i].end;
  31. a[i].settime();
  32. }
  33. sort(a, a + n, cmp);
  34. for (int i = 1; i < n; i++)
  35. {
  36. if (a[i].begin >= a[flag].end)
  37. {
  38. sum++;
  39. flag = i;
  40. }
  41. }
  42. cout << sum << endl;
  43. }
  44. }

一开始我没对贪心算法有深入的理解,竟然按照开始的时间排序然后贪心,当然一直WA,当我按照结束时间排序后才AC,今天在课上问费老这个问题时,突然想明白了。

这个问题与可并行的贪心是不一样的,具体见这个专题probleA

来自为知笔记(Wiz)

时间: 2024-12-21 23:59:02

SDAU课程练习--problemE的相关文章

SDAU课程练习--problemG(1006)

题目描述 Problem Description The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator

SDAU课程练习--problemQ(1016)

题目描述 FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'median' cow gives: half of the cows give as much or more than the median; half give as much or less. Given an odd number of cows N (1 <= N < 10,000) and

SDAU课程练习--problemO(1014)

题目描述 Before bridges were common, ferries were used to transport cars across rivers. River ferries, unlike their larger cousins, run on a guide line and are powered by the river's current. Cars drive onto the ferry from one end, the ferry crosses the

SDAU课程练习--problemC

题目描述 Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others." "Both of Tian and the king have three horses in

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

对软件工程课程的期望

学习到的能力预期: 1.首先,尽量能学会书中大部分知识,并能掌握和运用. 2.能体会到团队协作时互帮互助的乐趣和团队合作的重要性. 3..通过项目掌握更多的编程知识,加强自己的编程能力. 4.能在项目的基础上添加一些自己的功能. 对项目课程的期望: 1.希望做的项目可以激发我对编程的乐趣. 2.最好能完美做出给的项目. 对项目的愿景规划: 1.项目可以成功完成并且得到好的评价 2.每个成员都可以有所收获 3.每个人能提高自己的编程能力 4.没争执最好,有争执更能体现出每个人的学习态度.

《对软件工程课程的期望》

实践项目完成后学习到的能力的预期: 1. 能合理运用书本上的知识,不在是理论上的知识. 2. 提升自己的水平. 3. 与队友合作,取长补短,发挥长处,弥补不足. 对项目课程的期望: 1. 不要太难 2. 快乐学习 3. 学好,学精 对项目的愿景规划: 1.开发出的安卓具有: (1)实用且对大家都有帮助 (2)让用户有好的体验,比如界面和功能 (3)好玩,并且大家都喜欢用 2)每个成员体会到自己做出的软件的价值,能够有所收获. 3)拥有解决问题的体现. 4)每个人都有自己的价值,发挥自己的长处,弥

linux课程以及Linux主要学习哪些内容

7年线下Linux课程研发教学经验,课程设计个个知识循环相扣,让学员在实战学习解决问题过程中,来掌握Linux运维这门技能,整个学习过程,实战项目贯穿整个Linux运维所需的知识点,主要阶段包括如下: 第一阶段:Linux基础Linux入门.常用的基础命令.FHS .bash常用功能.I/O重定向及管道 .用户和组.权限管理.bash环境.sudo.grep及基本正则表达式.vim编辑器.文件查找(学完此阶段可:) 第二阶段:Linux系统管理磁盘及分区.Linux文件系统.逻辑卷.RAID .

Python自动化运维课程学习--Day3

本文为参加老男孩Python自动化运维课程第三天学习内容的总结. 大致内容如下: 1.文件操作 2.字符编码转码相关操作 3.函数 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 python2.7.12 --Python IDE: PyCharm 2016.3.2 一.文件操作: 1.文件操作流程:以只读.写(覆盖写).追加写.读写.追加读写.二进制读写等模式打开文件 ==> 得到文件句柄,并