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.       
  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/HansBug/p/4422286.html
Copyright © 2011-2022 走看看