HDU 2037
2016-05-25 12:54
302 查看
题目:HDU-2037-今年暑假不A
输入:
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
输出:
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
题目分析:
先对输入节目的时间段进行一个排序,然后设置一个指示变量bound来表明当前完整观看完的节目的结束时间,如果下一个节目的开始时间大于等于这个bound,那么完整看到的节目数sum就加1;还有容易忽略的一种情况,如果下一节目的结束时间比上一个完整看完节目时间的结束时间(即bound)还小,则我们选择这个节目的结束时间作为bound值。
输入:
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
输出:
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
题目分析:
先对输入节目的时间段进行一个排序,然后设置一个指示变量bound来表明当前完整观看完的节目的结束时间,如果下一个节目的开始时间大于等于这个bound,那么完整看到的节目数sum就加1;还有容易忽略的一种情况,如果下一节目的结束时间比上一个完整看完节目时间的结束时间(即bound)还小,则我们选择这个节目的结束时间作为bound值。
#include<iostream> #include<stdio.h> #include<string> #include<algorithm> using namespace std; struct Program{ int ibegin; int iend; }program[105]; bool cmp(const Program &a,const Program &b){ if(a.ibegin==b.ibegin) return a.iend<b.iend; else return a.ibegin<b.ibegin; } int main(){ //freopen("test.txt","r",stdin); int n; while(scanf("%d",&n) && n){ for(int i=0;i<n;i++){ scanf("%d%d",&program[i].ibegin,&program[i].iend); } sort(program,program+n,cmp); int sum=1; int bound = program[0].iend; for(int j=1;j<n;j++){ if( program[j].ibegin >= bound ){ sum += 1; bound=program[j].iend; } else if(program[j].iend <= bound) {bound = program[j].iend;} } printf("%d\n",sum); } return 0; }
相关文章推荐
- keepalived 主备:vrrp_script脚本监控具体服务
- 为什么使用反射
- Java获取文件Content-Type(Mime-Type)
- eclipse build很慢的时候,有可能是js文件编译验证慢的问题
- java.lang.NoSuchFieldError: TRACE
- 自定义JSTL标签
- 2016"百度之星“-初赛(Astar Round2B)-A.区间的价值
- 主主 高可用keepalived应用
- Linux 常用命令与案例
- 第十.十一周项目5摩托车继承自行车和机动车
- 第十二周项目3-数组类运算的实现
- C++作业6
- 让自己的项目支持 Carthage
- 【云计算】Ubuntu14.04 搭建GlusterFS集群
- Install Qt creator
- notepad++
- 引水工程--- 河南省第八届程序设计大赛(最小生成树)
- ulimit control
- Jquery自定义布局框架
- 这门课有什么用?