BZOJ1857:[SCOI2010]传送带——题解
生活随笔
收集整理的這篇文章主要介紹了
BZOJ1857:[SCOI2010]传送带——题解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://www.lydsy.com/JudgeOnline/problem.php?id=1857
Description
在一個(gè)2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線(xiàn)段。兩條傳送帶分別為線(xiàn)段AB和線(xiàn)段CD。lxhgww在AB上的移動(dòng)速度為P,在CD上的移動(dòng)速度為Q,在平面上的移動(dòng)速度R。現(xiàn)在lxhgww想從A點(diǎn)走到D點(diǎn),他想知道最少需要走多長(zhǎng)時(shí)間Input
輸入數(shù)據(jù)第一行是4個(gè)整數(shù),表示A和B的坐標(biāo),分別為Ax,Ay,Bx,By 第二行是4個(gè)整數(shù),表示C和D的坐標(biāo),分別為Cx,Cy,Dx,Dy 第三行是3個(gè)整數(shù),分別是P,Q,ROutput
輸出數(shù)據(jù)為一行,表示lxhgww從A點(diǎn)走到D點(diǎn)的最短時(shí)間,保留到小數(shù)點(diǎn)后2位Sample Input
0 0 0 100100 0 100 100
2 2 1
Sample Output
136.60HINT
對(duì)于100%的數(shù)據(jù),1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
1<=P,Q,R<=10
——————————————————————————————
首先我們?nèi)B一點(diǎn)E,CD一點(diǎn)F,則我們跑了AE+EF+FD。
考慮將其中一個(gè)點(diǎn)固定住,那么顯然對(duì)于另一個(gè)點(diǎn)我們?nèi)旨纯汕蟪鲞@個(gè)店的位置(顯然該點(diǎn)有最小值,他的左右兩點(diǎn)都比他大,所以為單峰函數(shù))。
那么對(duì)于最開(kāi)始的點(diǎn),我們同樣也是單峰函數(shù),也可以三分(通過(guò)神奇的代數(shù)幾何可以證明)
所以這題就是三分套三分。
PS:因?yàn)檫@題x1與x2可能相同,所以不能單獨(dú)三分x或y,必須同時(shí)三分(不然代碼量太大了)
#include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<iostream> using namespace std; typedef double dl; const int N=100; dl ax,ay,bx,by,cx,cy,dx,dy,P,Q,R; inline dl dis(dl x,dl y,dl xx,dl yy){return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy)); } dl sff(dl x,dl y){dl lx=cx,rx=dx,ly=cy,ry=dy;dl lfx,lfy,rfx,rfy;for(int i=1;i<=N;i++){lfx=(lx*2+rx)/3;lfy=(ly*2+ry)/3;rfx=(lfx+rx)/2;rfy=(lfy+ry)/2;dl t1=dis(lfx,lfy,dx,dy)/Q+dis(lfx,lfy,x,y)/R;dl t2=dis(rfx,rfy,dx,dy)/Q+dis(rfx,rfy,x,y)/R;if(t1<t2){rx=rfx;ry=rfy;}else{lx=lfx;ly=lfy;}}return dis(lx,ly,dx,dy)/Q+dis(lx,ly,x,y)/R+dis(x,y,ax,ay)/P; } dl sfe(dl lx,dl rx,dl ly,dl ry){dl lex,ley,rex,rey;for(int i=1;i<=N;i++){lex=(lx*2+rx)/3;ley=(ly*2+ry)/3;rex=(lex+rx)/2;rey=(ley+ry)/2;if(sff(lex,ley)<sff(rex,rey)){rx=rex;ry=rey;}else{lx=lex;ly=ley;}}return sff(lx,ly); } int main(){cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy>>P>>Q>>R;printf("%.2lf\n",sfe(ax,bx,ay,by));return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/luyouqi233/p/8007039.html
總結(jié)
以上是生活随笔為你收集整理的BZOJ1857:[SCOI2010]传送带——题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java护眼色是什么数据,护眼色的RGB
- 下一篇: PHP婚庆网站论文,jsp婚庆网站