zoukankan      html  css  js  c++  java
  • 3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者

    3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者

    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 71  Solved: 62
    [Submit][Status][Discuss]

    Description

        约翰有N(1≤N≤50000)头牛,约翰的草地可以认为是一条直线.每只牛只喜欢在某个特定的范围内吃草.第i头牛喜欢在区间(Si,Ei)吃草,1≤Si<Ei≤1,000,000,00.
        奶牛们都很自私,他们不喜欢和其他奶牛共享自己喜欢吃草的领域,因此约翰要保证任意
    两头牛都不会共享他们喜欢吃草昀领域.如果奶牛i和奶牛J想要同时吃草,那么要满足:Si>=Ej或者Ei≤Sj.约翰想知道在同一时刻,最多可以有多少头奶牛同时吃草?

    Input

        第1行:一个整数N.
        第2到N+1行:第i+l行有两个整数Si,Ei.

    Output

     
        一个整数,最多可以有多少头牛同时吃草.

    Sample Input

    5
    2 4
    1 12
    4 5
    7 10
    7 8

    Sample Output

    3

    HINT

      第1,3,4共3只奶牛可以同时吃草,第1,3,5也可以.

    Source

    Silver

    题解:贪心水题一道= =。。。很明显对于同样的右界限区间,显然选范围最小的肯定没有错,于是只保留范围小的,然后排序,贪心水过。。。

     1 /**************************************************************
     2     Problem: 3410
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:212 ms
     7     Memory:696 kb
     8 ****************************************************************/
     9  
    10 var
    11    i,j,k,l,m,n,t:longint;
    12    a:array[0..60000,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];y:=a[(l+r) div 2,1];
    22                repeat
    23                      while (a[i,2]<x) or ((a[i,2]=x) and (a[i,1]>y)) do inc(i);
    24                      while (a[j,2]>x) or ((a[j,2]=x) and (a[j,1]<y)) 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 begin
    36      readln(n);
    37      for i:=1 to n do readln(a[i,1],a[i,2]);
    38      sort(1,n);
    39      a[0,1]:=0;a[0,2]:=0;
    40      t:=0;l:=0;
    41      for i:=1 to n do
    42          if a[i,2]<>a[i-1,2] then
    43             if a[i,1]>=t then
    44                begin
    45                     t:=a[i,2];
    46                     inc(l);
    47                end;
    48      writeln(l);
    49      readln;
    50 end.     
  • 相关阅读:
    网页加载进度条
    【转载】通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
    前端知识复习:Html DIV 图文混排(文字放在图片下边)
    NOPI导出Excel
    C# 发送邮件
    DataSetToList 和 DataTableTolist 转换
    一个修改版的PHP ajax Tree树形菜单
    你的站为什么百度无动于衷——10年老站长的SEO肺腑之言 .
    关于php使用phpqrcode生成二维码的完整源码下载
    php结合phpqrcode生成带图片LOGO的二维码
  • 原文地址:https://www.cnblogs.com/HansBug/p/4421022.html
Copyright © 2011-2022 走看看