zoukankan      html  css  js  c++  java
  • [ACM]今年暑假不AC(贪心)

    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


    解题思路:

    题目中的意思是给定几个节目的开始时间和结束时间,要求你能看到最多节目的数目(每个节目都是完整的看完),这里用到了贪心的思想,用结构体存储节目,然后把节目按照结束时间进行排序,排序后第一个节目肯定是要选的,因为当前情况下最优,结束时间最短,然后依次统计所有节目这一个串中,所有后一个节目的开始时间大于等于前一个节目的结束时间的节目总数。

    代码:

    #include <iostream>
    
    using namespace std;
    struct timetable
    {
        int s;//开始时间
        int e;//结束时间
    }time[101];//电视节目总数,结构体来表示
    
    int main()
    {
        int n,i,j;
        while(cin>>n&&n)
        {
            for(i=1;i<=n;i++)
                cin>>time[i].s>>time[i].e;
            timetable temp;
            for(i=1;i<=n;i++)
                for(j=i+1;j<=n;j++)
            {
                if(time[i].e>=time[j].e)
                {
                    temp=time[i];
                    time[i]=time[j];
                    time[j]=temp;
                }
            }//按照结束时间从小到大对节目进行排序
            int count=1;
            temp.s=time[1].e;//temp结构体它的开始时间保存着上一个节目的结束时间
            for(i=2;i<=n;i++)
                if(time[i].s>=temp.s)
                {
                    temp.s=time[i].e;
                    count++;
                }//贪心算法,排序后的第一个节目肯定要看,然后依次计算下一个节目的开始时间大于等于上一个节目的结束时间的节目数
            cout<<count<<endl;
        }
        return 0;
    }
    

    运行截图:


  • 相关阅读:
    如何:为 Silverlight 客户端生成双工服务
    Microsoft Sync Framework 2.1 软件开发包 (SDK)
    Windows 下的安装phpMoAdmin
    asp.net安全检测工具 Padding Oracle 检测
    HTTP Basic Authentication for RESTFul Service
    Windows系统性能分析
    Windows Server AppFabric Management Pack for Operations Manager 2007
    Mongo Database 性能优化
    服务器未能识别 HTTP 标头 SOAPAction 的值
    TCP WAIT状态及其对繁忙的服务器的影响
  • 原文地址:https://www.cnblogs.com/sr1993/p/3697830.html
Copyright © 2011-2022 走看看