zoukankan      html  css  js  c++  java
  • 3433: [Usaco2014 Jan]Recording the Moolympics

    3433: [Usaco2014 Jan]Recording the Moolympics

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 137  Solved: 89
    [Submit][Status][Discuss]

    Description

     Being a fan of all cold-weather sports (especially those involving cows), Farmer John wants to record as much of the upcoming winter Moolympics as possible. The television schedule for the Moolympics consists of N different programs (1 <= N <= 150), each with a designated starting time and ending time. FJ has a dual-tuner recorder that can record two programs simultaneously. Please help him determine the maximum number of programs he can record in total.

    给出n个区间[a,b).有2个记录器.每个记录器中存放的区间不能重叠.

    求2个记录器中最多可放多少个区间.

    Input

    * Line 1: The integer N.

    * Lines 2..1+N: Each line contains the start and end time of a single program (integers in the range 0..1,000,000,000).

    Output

    * Line 1: The maximum number of programs FJ can record.

    Sample Input

    6
    0 3
    6 7
    3 10
    1 5
    2 8
    1 9

    INPUT DETAILS: The Moolympics broadcast consists of 6 programs. The first runs from time 0 to time 3, and so on.

    Sample Output

    4

    OUTPUT DETAILS: FJ can record at most 4 programs. For example, he can record programs 1 and 3 back-to-back on the first tuner, and programs 2 and 4 on the second tuner.

    HINT

     

    Source

    Silver 鸣谢Alegria_提供译文

    题解:(呵呵哒我会告诉你我的第一反应是网络流?)

    其实仔细看看后发现还是个贪心,只不过现在是两个容器= =,然后就是经典的右边界排序后O(n)乱搞了

     1 /**************************************************************
     2     Problem: 3433
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:0 ms
     7     Memory:304 kb
     8 ****************************************************************/
     9  
    10 var
    11    i,j,k,l,m,n,ans,l1,l2:longint;
    12    a:array[0..10000,1..2] of longint;
    13 procedure swap(var x,y:longint);
    14           var z:longint;
    15           begin
    16                z:=x;x:=y;y:=z;
    17           end;
    18 procedure sort(l,r:longint);
    19           var i,j,x,y:longint;
    20           begin
    21                i:=l;j:=r;x:=a[(l+r) div 2,2];
    22                repeat
    23                      while a[i,2]<x do inc(i);
    24                      while a[j,2]>x do dec(j);
    25                      if i<=j then
    26                         begin
    27                              swap(a[i,1],a[j,1]);
    28                              swap(a[i,2],a[j,2]);
    29                              inc(i);dec(j);
    30                         end;
    31                until i>j;
    32                if i<r then sort(i,r);
    33                if l<j then sort(l,j);
    34           end;
    35  
    36 begin
    37      readln(n);
    38      for i:=1 to n do readln(a[i,1],a[i,2]);
    39      sort(1,n);
    40      for i:=1 to n do
    41          begin
    42               if (a[i,1]>=l1) then
    43                  begin
    44                       l1:=a[i,2];
    45                       inc(ans);
    46                  end
    47               else if (a[i,1]>=l2) then
    48                    begin
    49                         l2:=a[i,2];
    50                         inc(ans);
    51                    end;
    52               if l1<l2 then swap(l1,l2);
    53          end;
    54      writeln(ans);
    55      readln;
    56 end.       
  • 相关阅读:
    刷题62—生命游戏
    刷题61—有效括号的嵌套深度
    system.transfer.list深度解析
    recovery 升级界面顶部花屏问题分析
    recovery 升级过程LED灯闪烁
    recovery 差分升级包制作超时
    recovery 升级过程执行自定义shell命令
    recovery log直接输出到串口
    android recovery代码修改之原生建议
    android recovery 升级UI显示之资源文件
  • 原文地址:https://www.cnblogs.com/HansBug/p/4422286.html
Copyright © 2011-2022 走看看