bzoj 1857 [Scoi2010]传送带
来源:互联网 发布:移动进销存软件 编辑:程序博客网 时间:2024/05/20 22:00
Description
在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间
Input
输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R
Output
输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位
Sample Input
0 0 0 100
100 0 100 100
2 2 1
100 0 100 100
2 2 1
Sample Output
136.60
HINT
对于100%的数据,1<=Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=10001<=P,Q,R<=10
写的第一道三分啊、、
题目就是分别在AB,CD上面找到两点E、F,使得走完AEFD的时间最小。
一看到题目就想先在CD定一点,然后求AB上面对应的最优点就明显可以用三分了。因为时间关于AE的函数是单谷的。也就是类似开口向上的二次函数。
然后考虑两条线,在CD上面的函数是不是也是单谷的呢?不会证。。。感觉像。。。感觉距离关于FD的长度是连续可导的。。然后不太可能是一会升一会降。。。然后就尝试三分之。。。结果被坑了。。。线段一可能退化成点。。。无语了都。。
不过还是不会证。。求指教、、
ACCODE
program
bzoj_1857;
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
- bzoj 1857 [Scoi2010]传送带
- bzoj 1857 [Scoi2010]传送带
- BZOJ 1857: [Scoi2010]传送带
- BZOJ-1857-传送带-SCOI2010
- BZOJ 1857: [Scoi2010]传送带
- 【BZOJ 1857】 [Scoi2010]传送带
- BZOJ 1857 [Scoi2010]传送带
- BZOJ 1857:[scoi2010] 传送带
- BZOJ 1857 [Scoi2010]传送带 三分
- BZOJ 1857 [Scoi2010]传送带 三分套三分
- 【BZOJ 1857】【SCOI2010】传送带 【三分套三分】
- bzoj 1857: [Scoi2010]传送带 三分套三分
- 【BZOJ 1857】[Scoi2010]传送带 三分套三分
- Bzoj 1857: [Scoi2010]传送带(三分套三分)
- bzoj 1857 [SCOI2010]传送带【三分套三分】
- BZOJ 1857 [Scoi2010]传送带 三分套三分
- BZOJ P1857:[Scoi2010]传送带
- 1857: [Scoi2010]传送带
- bzoj 1208 [HNOI2004]宠物收养所
- bzoj 1597 [Usaco2008 Mar]土地购…
- noi 2008 假面舞会 (bzoj 1064)
- bzoj 1579 [Usaco2009 Feb]Revampi…
- bzoj 1150 [CTSC2007]数据备份Back…
- bzoj 1857 [Scoi2010]传送带
- bzoj 2245 [SDOI2011]工作安排
- noi 2007 项链工厂 (bzoj 1493)
- bzoj 2657 [Zjoi2012]旅游(journey…
- bzoj 1861 [Zjoi2006]Book 书架
- poj 1741 Tree
- bzoj 2338 [HNOI2011]数矩形
- poj 1279 Art Gallery
- HttpWatch工具简介及使用技巧(转载)