zoukankan      html  css  js  c++  java
  • 今年暑假不AC

    今年暑假不AC

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
    Total Submission(s) : 20   Accepted Submission(s) : 14
    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
     
    Author
    lcy
     
    Source
    ACM程序设计期末考试(2006/06/07)
    典型的贪心算法,要使得看的节目最多,既对节目的结束时间进行排序,比较节目的开始时间,从而找出节目的最多能够看的集数;
     普通方法:
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main()
     5 {
     6     int n,a[105],b[105],i,j,sign,num,k;
     7     while(scanf("%d",&n),n!=0)
     8      {
     9         for(i=0;i<n;i++)
    10             scanf("%d %d",&a[i],&b[i]);
    11         for(i=n-1;i>=0;i--)
    12         {
    13             k=i;
    14             for(j=i-1;j>=0;j--)
    15                 if(b[k]<b[j])k=j;
    16             if(k!=i)
    17             {
    18                 num=b[i];b[i]=b[k];b[k]=num;
    19                 num=a[i];a[i]=a[k];a[k]=num;
    20             }
    21         }
    22         for(i=1,num=b[0],sign=1;i<n;i++)
    23         {
    24             if(a[i]>=num)
    25             {
    26                 num=b[i];
    27                 sign++;
    28             }
    29         }
    30         printf("%d
    ",sign);
    31      }
    32 return;
    33 }
    View Code

     修改:2015.5.12(优先队列+贪心)

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <algorithm>
     4 #include <queue>
     5 using namespace std;
     6 struct node
     7 {
     8     int F,E;
     9     friend bool operator <(node a,node b)
    10     {
    11         return a.E>b.E;
    12     }
    13 };
    14 int main()
    15 {
    16     int n,m,i,j,sum,Num;
    17     while(scanf("%d",&n)&&n)
    18     {
    19         priority_queue<node>ID;
    20         node x;
    21         for(i=0;i<n;i++)
    22         {
    23             scanf("%d %d",&x.F,&x.E);ID.push(x);
    24         }
    25         Num=ID.top().E;
    26         ID.pop();
    27         for(i=1,sum=1;i<n;i++)
    28         {
    29             ID.top().F;
    30             if(Num<=ID.top().F){sum++;Num=ID.top().E;}
    31             ID.pop();
    32         }
    33         printf("%d
    ",sum);
    34     }
    35     return 0;
    36 }
    View Code
    转载请备注:
    **************************************
    * 作者: Wurq
    * 博客: https://www.cnblogs.com/Wurq/
    * Gitee: https://gitee.com/wurq
    **************************************
  • 相关阅读:
    Python3 获取抖音无水印视频 2020年12月23日----lanyi原创
    javascript9分享到菜单,菜单在屏幕左侧的移出和收回
    javascript8图片刹车运动
    javascript7图片的淡入淡出
    javascript6鼠标拖拽图片
    javascript5每秒改变字体颜色的大小
    javascript4动态生成表格
    javascript3跟随鼠标的提示框
    javascript2选项卡
    同学,为什么Golang中不用this和self
  • 原文地址:https://www.cnblogs.com/Wurq/p/3750315.html
Copyright © 2011-2022 走看看