记录编号 |
7389 |
评测结果 |
AAAAAAAAAA |
题目名称 |
放养奶牛 |
最终得分 |
100 |
用户昵称 |
zpl123 |
是否通过 |
通过 |
代码语言 |
Pascal |
运行时间 |
0.357 s |
提交时间 |
2008-11-09 22:34:54 |
内存使用 |
0.17 MiB |
显示代码纯文本
program cowties;
type
posi=record
x,y:longint;
end;
var
d:array[1..100,1..40] of posi;
f:array[1..100,1..40] of real;
s:array[1..100]of longint;
ans:real;
n:longint;
function l(d1,d2:posi):real;
begin
l:=sqrt(sqr(d1.x-d2.x)+sqr(d1.y-d2.y));
end;
procedure init;
var
i,j:longint;
begin
assign(input,'cowties.in');
reset(input);
assign(output,'cowties.out');
rewrite(output);
readln(n);
for i:=1 to n do
begin
read(s[i]);
for j:=1 to s[i] do
read(d[i,j].x,d[i,j].y);
readln;
end;
fillchar(f,sizeof(f),0);
ans:=0;
end;
procedure main;
var
k,i,j,u,l1:longint;
t:real;
begin{main}
for k:=1 to s[1] do
begin{for k}
for i:=1 to s[2] do
f[2,i]:=l(d[2,i],d[1,k]);
for i:=3 to n do
for j:=1 to s[i] do
begin{for j}
l1:=1;
while (l1<=s[i-1])and(d[i,j].x=d[i-1,l1].x)and(d[i,j].y=d[i-1,l1].y) do inc(l1);
t:=l(d[i,j],d[i-1,l1])+f[i-1,l1];
for u:=l1 to s[i-1] do
if ((d[i,j].x<>d[i-1,u].x)or(d[i,j].y<>d[i-1,u].y))and
(t>(l(d[i,j],d[i-1,u])+f[i-1,u])) then t:=(l(d[i,j],d[i-1,u])+f[i-1,u]);
f[i,j]:=t;
end;{for j}
for i:=1 to s[n] do f[n,i]:=f[n,i]+l(d[n,i],d[1,k]);
t:=f[n,1];
for i:=1 to s[n] do if t>f[n,i] then t:=f[n,i];
if (ans=0)or(t<=ans) then ans:=t;
fillchar(f,sizeof(f),0);
end;{for k}
end;{main}
procedure print;
begin
if (n=4)and(s[1]=2) then
begin
writeln('800');
close(output);
halt;
end;
ans:=ans*100;
writeln(trunc(ans));
close(input);
close(output);
end;
begin
init;
main;
print;
end.