• pku2456 Aggressive cows


    数轴上有n个点,现在有c个点,放在n个点中的c个点中,让c个点中两点间最小距离最大。

    这个最大最小问题就真是二分答案了,然后贪心判定即可。

    加了一个pascal自身优化{$inline on}把140+ms拉到了90+ms。

    View Code
     1 {$inline on}
    2 program pku2456(input,output);
    3 var
    4 x : array[0..100010] of longint;
    5 n,c : longint;
    6 answer : longint;
    7 procedure init; inline;
    8 var
    9 i : longint;
    10 begin
    11 readln(n,c);
    12 for i:=1 to n do
    13 readln(x[i]);
    14 end; { init }
    15 procedure swap(var aa,bb :longint ); inline;
    16 var
    17 tt : longint;
    18 begin
    19 tt:=aa;
    20 aa:=bb;
    21 bb:=tt;
    22 end; { swap }
    23 procedure sort(p,q : longint); inline;
    24 var
    25 i,j,m : longint;
    26 begin
    27 i:=p;
    28 j:=q;
    29 m:=x[(i+j)>>1];
    30 repeat
    31 while x[i]<m do
    32 inc(i);
    33 while x[j]>m do
    34 dec(j);
    35 if i<=j then
    36 begin
    37 swap(x[i],x[j]);
    38 inc(i);
    39 dec(j);
    40 end;
    41 until i>j;
    42 if i<q then sort(i,q);
    43 if j>p then sort(p,j);
    44 end; { sort }
    45 function check(limit : longint ):boolean; inline;
    46 var
    47 sum : longint;
    48 i,now : longint;
    49 begin
    50 now:=1;
    51 sum:=1;
    52 for i:=1 to n do
    53 begin
    54 if x[i]-x[now]>=limit then
    55 begin
    56 now:=i;
    57 inc(sum);
    58 end;
    59 if sum>=c then
    60 exit(true);
    61 end;
    62 exit(false);
    63 end; { check }
    64 procedure dichotomy; inline;
    65 var
    66 l,r,mid : longint;
    67 begin
    68 l:=1;
    69 r:=x[n];
    70 while l+1<r do
    71 begin
    72 mid:=(l+r)>>1;
    73 if check(mid) then
    74 l:=mid
    75 else
    76 r:=mid;
    77 end;
    78 answer:=l;
    79 end; { dichotomy }
    80 procedure print; inline;
    81 begin
    82 writeln(answer);
    83 end; { print }
    84 begin
    85 init;
    86 sort(1,n);
    87 dichotomy;
    88 print;
    89 end.



  • 相关阅读:
    对.Net Framework的认识(3)
    对负载均衡的认识
    对.Net Framework的认识(1)
    对.Net Framework的认识(2)
    对ASP.Net的认识(二)
    windows 使用 ssh 隧道代理
    python + django 搭建网页(尝试4):自动显示txt文件
    群论基础(3):有限群表示论
    群论基础(1):群的定义
    群论基础(5):李群
  • 原文地址:https://www.cnblogs.com/neverforget/p/2411335.html
Copyright © 2020-2023  润新知