讨论 / 错在哪里了
Fish、のTorres 2012-07-18 01:03:00
点我顶贴 收藏 删除
var f,i,j,k,n,v:longint;

a:array[1..100,1..100]of extended;

b,c:array[1..100]of longint;

begin

readln(n,v);

for i:=1 to n do

for j:=1 to n do

a[i,j]:=100000;

for i:=1 to n do begin

readln(b[i],c[i],f);

if f<>0 then begin

a[i,f]:=sqrt((b[i]-b[f])*(b[i]-b[f])+(c[i]-c[f])*(c[i]-c[f]))/v;

a[f,i]:=a[i,f];

end;

end;

for i:=1 to n-1 do begin

for f:=i+1 to n do begin

if (b[i]=b[f]) and (c[i]>c[f]) then a[i,f]:=sqrt((c[f]-c[i])*(c[f]-c[i])/5);

if (b[i]=b[f]) and (c[f]>c[i]) then a[f,i]:=sqrt((c[f]-c[i])*(c[f]-c[i])/5);

end;

end;

for k:=1 to n do begin

for i:=1 to n do begin

for j:=1 to n do begin

if a[i,k]+a[k,j]<a[i,j] then a[i,j]:=a[i,k]+a[k,j];

end;

end;

end;

write(a[1,n]:0:2);

end.

#1 Conon@2011-08-07 23:16:00
回复 删除
物理 你认为的自由落体公式错了

公式为 0.5*g*t^2=h

因此时间等于 t=sqrt((h乘以2)/g)

而不是高度的平方乘以2/g

说好的悬赏呢?

#2 77@2012-07-18 01:03:00
回复 删除
i,j可能存在2条路径

1条是直接爬过去 一条是用自由落体的

因为你是用floyed 所以你要保留时间比较短的那一条边

当爬的速度v很大的时候显然是比自由落体快的……

#3 风之翼@2014-09-12 04:58:56
回复 删除
思路是DP吗
查看更多回复
提交回复