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.     

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

BZOJ 3097: Hash Killer I【构造题,思维题】

3097: Hash Killer I Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special Judge Su...

1986
来自专栏HansBug's Lab

3211: 花神游历各国

3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 1042  Solved: 381 ...

2735
来自专栏ml

HDUOJ---2082

找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/...

37612
来自专栏数据结构与算法

洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom

ng the other ends of her ropes (if she has any), along with the cows holding the...

3405
来自专栏HansBug's Lab

1257: [CQOI2007]余数之和sum

1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 2001  So...

2888
来自专栏HansBug's Lab

2292: 【POJ Challenge 】永远挑战

2292: 【POJ Challenge 】永远挑战 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 553 ...

3016
来自专栏数据结构与算法

BZOJ4269: 再见Xor(线性基)

给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值。

664
来自专栏算法修养

HOJ 2226&POJ2688 Cleaning Robot(BFS+TSP(状态压缩DP))

Cleaning Robot Time Limit: 1000MS Memory Limit: 65536K Total Submission...

2834
来自专栏数据结构与算法

BZOJ3560: DZY Loves Math V(欧拉函数)

$\sum_{i_1 = 0}^{b_1} \sum_{i_2 = 0}^{b_2} \dots \sum_{i_n = 0}^{b_n} \phi( p^{\...

1146
来自专栏小樱的经验随笔

POJ 2209 The King(简单贪心)

The King Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7499...

2804

扫码关注云+社区