题目要求:

Problem Description
“今年暑假不AC?”

“是的。”

“那你干什么呢?”

“看世界杯呀,笨蛋!”

“@#$%^&*%...”



确实如此,世界杯来了,球迷的节日也来了。预计非常多ACMer也会抛开电脑。奔向电视了。

作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其他的节目,比方新闻联播(永远不要忘记关心国家大事)、很6+7、超级女生,以及王小丫的《开心辞典》等等,如果你已经知道了全部你喜欢看的电视节目的转播时间表。你会合理安排吗?(目标是能看尽量多的完整节目)
 
Input
输入数据包括多个測试实例,每一个測试实例的第一行仅仅有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的開始和结束时间,为了简化问题,每一个时间都用一个正整数表示。n=0表示输入结束,不做处理。
 
Output
对于每一个測试实例。输出能完整看到的电视节目的个数。每一个測试实例的输出占一行。

解题思路:

看到这道题目之后。非常easy知道这是一个关于事件的排序问题。用start[i]和end[i来记录每一个事件i的開始和结束的时间。为了在之后对事件的结束时间的早晚进行排序。考虑用结构体来存储事件的起止时间,然后按事件的结束的早晚进行排序。贪心算法,让选择了一个事件之后,剩余的时间尽可能的大。因此优先选择结束时间早的事件。在对事件的结束时间按从早到晚的顺序拍好序后,就能够依照从前到后的考虑,增加了一个事件后。考虑下一个时间的開始时间是否大于(包括等于)当前事件的结束时间,假设是则增加到序列。

实现的代码:

# include <iostream>
# include <algorithm>
using namespace std; struct node
{
int start;
int end;
}Node[105]; int cmp(struct node a,struct node b)
{
return a.end<b.end;
return a.start<b.start;
} int main()
{
//freopen("input.txt","r",stdin);
int n;
while((scanf("%d",&n))!=EOF && n!=0)
{
int i,j;
for(i=0;i<n;i++)
{
scanf("%d%d",&Node[i].start,&Node[i].end);
}
sort(Node,Node+n,cmp);
int maxs=1;
int cur=0;
for(i=1;i<n;i++)
{
if(Node[i].start>=Node[cur].end)
{
maxs++;
cur=i;
}
}
printf("%d\n",maxs);
}
return 0;
}

HDU2037 事件排序问题的更多相关文章

  1. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  2. [DataTable]控件排序事件中用DataView及DataTable排序

    控件排序事件中用DataView及DataTable排序 文章分类:.net编程 在做ASP.NET页面开发时,经常要用到dataset(或者DataTable),绑定到DataGrid或GridVi ...

  3. 关于layui中tablle 渲染数据后 sort排序问题

    最近在使用easyweb框架做后台管理,案例可见https://gitee.com/whvse/EasyWeb. 其中遇到了 sort排序问题, html代码:<table class=&quo ...

  4. 小工具:天气查询 Vs自定义设置 DevGridControl中GridView排序问题 小工具:火车票查询 小工具:邮件发送 小工具:截图&简单图像处理

    小工具:天气查询   开发一个天气查询的工具主要由两步构成,一是数据的获取,二是数据的展示.  一.数据获取 数据获取又可以分为使用其它公司提供的API和手动抓取其它网站数据. 1. 某公司提供的AP ...

  5. Jquery的点击事件,三句代码完成全选事件

    先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  6. 关于 Chrome 浏览器中 onresize 事件的 Bug

    我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...

  7. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  8. C++中的事件分发

    本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...

  9. 移动端IOS点击事件失效解决方案

    解决方案 解决办法有 4 种可供选择: 1 将 click 事件直接绑定到目标元素(即 .target)上 2 将目标元素换成 <a> 或者 button 等可点击的元素 3 将 clic ...

随机推荐

  1. 入门开发工具idea常见问题之选项中没有servlet

    1.在maven中如果创建不了servlet,在project Setting旁边的添加一个web选项,就可以创建servlet了. 初次接触这个陌生的工具还是不太好弄.

  2. Android Studio 关于build.gradle配置问题

    当导入一个Android Project时,会出现很多版本的问题,导入前先删除 .idea文件 .gradle文件 ,gradle文件(与.gradle区分,导入时Android Studio会提示重 ...

  3. Apache服务器防范DoS

    Apache服务器对拒绝服务攻击的防范主要通过软件Apache DoS Evasive Maneuvers Module  来实现.它是一款mod_access的替代软件,可以对抗DoS攻击.该软件可 ...

  4. Tcl之Lab1

    Task 1. Use help 1) What is the default switch for the redirect command? -file help -v redirect # or ...

  5. ionic错误

    1. 问题:Error: read ECONNRESET 启动使用ionic serve启动服务器之后只要一刷新界面就会导致服务器关闭,报的错误如下: events.js:136 throw er; ...

  6. 微信小程序animation

    wxml <view class="background" animation="{{rotateData}}"> </view>< ...

  7. Android之手机振动和振铃

    一.振动的实现1.使用振动所需的权限 <uses-permission android:name="android.permission.VIBRATE" />2.相关 ...

  8. 1.Linux入门介绍

    1.1 Linux概述 1.1.1 Linux简要介绍 Linux的由来: Linux的内核最初是由芬兰人李纳斯·托瓦茨在上大学的时候编写的一个内核,它是基于Unix操作系统编写的 大多服务器使用的是 ...

  9. Asp.NET误人子弟教程:在MVC里面结合JQ实现AJAX

    public class Person { public string Name { get; set; } public string City { get; set; } public strin ...

  10. linux学习4-crontab定时任务

    crontab -e  在当前用户下创建定时任务 我们通过这样一张图来了解 crontab 的文档编辑的格式与参数 在了解命令格式之后,我们通过这样的一个例子来完成一个任务的添加,在文档的最后一排加上 ...