其实openjudge上二分答案中也有这道题,叫做河中跳房子,应该是来自USACO的,
只是考试题的题目描述中没有了奶牛=。=,连数据范围都一模一样
好吧,最短距离最长,显然的二分答案=w=
var
len,n,m,l,mid,r,ans:longint;
i :longint;
sum :array[0..50010] of longint;
function check(x:longint):boolean;
var
t,tt:longint;
i:longint;
begin
i:=1;t:=0;tt:=0;
while (i<=n+1) and (t<=m) do
begin
if ((sum[i]-tt)<x) and (i<=n+1) then
begin
inc(t);
inc(i);
end else
begin
tt:=sum[i];
inc(i);
end;
end;
if (i=n+2) and (t<=m) then exit(true) else exit(False);
end;
begin
read(len,n,m);
for i:=1 to n do read(sum[i]);
sum[n+1]:=len;
l:=0;r:=len;
mid:=(l+r)>>1;
while (l<=r) do
begin
if check(mid) then
begin
ans:=mid;
l:=mid+1;
end else r:=mid-1;
mid:=(l+r)>>1;
end;
writeln(ans);
end.
——by Eirlys转载请注明出处=w=