zoukankan      html  css  js  c++  java
  • HDU 2037

    题目:HDU-2037-今年暑假不A

    输入:

    输入数据包含多个测试实例,每个测试实例的第一行只有一个整数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
    ",sum);
            }
    
        return 0;
    }
    技进乎艺,艺进乎道
  • 相关阅读:
    python之xlwt模块列宽width、行高Heights详解
    Testlink在CentOS、windows安装
    Appium中长按按钮操作
    CentOS oracle Client客户端安装
    WebDriver中自动识别验证码--Python实现
    shell批量重命令文件脚本
    MFC 显示图片
    MFC CEdit控件 自动换行
    第一次社会
    undefined reference 问题各种情况分析
  • 原文地址:https://www.cnblogs.com/weekend/p/5526619.html
Copyright © 2011-2022 走看看