bzoj1857 三分套三分

来源:互联网 发布:魔兽世界插件for mac 编辑:程序博客网 时间:2024/04/28 01:38

题目连接:http://www.lydsy.com/JudgeOnline/problem.php?id=1857
这算是bzoj为数不多的水题之一了吧,打这题目是为了练一练三分。。
就是三分套三分的模板题,三分在AB和CD上的坐标。。
代码(来自网络):

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.
0 0
原创粉丝点击