bzoj1857 三分套三分
阿新 • • 發佈:2019-02-09
const lim=1e-12;
type dot=record
x,y:extended;
end;
var a,b,c,d,l,r,mid1,mid2:dot;
x,y,secx,secy,p,q,o:extended;
function dist(x,y:dot):extended;
begin
dist:=sqrt(sqr(x.x-y.x)+sqr(x.y-y.y));
end;
function divide(fin:dot):extended;
var mid1,mid2,l,r:dot;
secx,secy,x,y:extended;
begin
l:=a; r:=b;
repeat
secx:=(r.x-l.x)/3 ; secy:=(r.y-l.y)/3;
mid1.x:=l.x+secx; mid1.y:=l.y+secy;
mid2.x:=r.x-secx; mid2.y:=r.y-secy;
x:=dist(a,mid1)/p+dist(mid1,fin)/o;
y:=dist(a,mid2)/p+dist(mid2,fin)/o;
if x<y then r:=mid2 else l:=mid1;
until dist(l,r)<lim; exit(x);
end;
begin
readln(a.x,a.y,b.x,b.y);
readln(c.x,c.y,d.x,d.y);
readln(p,q,o);
l:=c; r:=d;
repeat
secx:=(r.x-l.x)/3 ; secy:=(r.y-l.y)/3;
mid1.x:=l.x+secx; mid1.y:=l.y+secy;
mid2.x:=r.x-secx; mid2.y:=r.y-secy;
x:=divide(mid1)+dist(mid1,d)/q;
y:=divide(mid2)+dist(mid2,d)/q;
if x<y then r:=mid2 else l:=mid1;
until dist(l,r)<lim; writeln(x:0:2);
end.