在乙個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段ab和線段cd。lxhgww在ab上的移動速度為p,在cd上的移動速度為q,在平面上的移動速度r。現在lxhgww想從a點走到d點,他想知道最少需要走多長時間
輸入資料第一行是4個整數,表示a和b的座標,分別為ax,ay,bx,by 第二行是4個整數,表示c和d的座標,分別為cx,cy,dx,dy 第三行是3個整數,分別是p,q,r
輸出資料為一行,表示lxhgww從a點走到d點的最短時間,保留到小數點後2位
0 0 0 100
100 0 100 100
2 2 1
136.60
對於100%的資料,1<= ax,ay,bx,by,cx,cy,dx,dy<=1000
1<=p,q,r<=10
又是一道很有意思的題目
現在相當於要求乙個函式的最小值
自然要yy是乙個下凸函式
然後就首先在ab線段上三分乙個點出來算答案
答案怎麼算了,那自然在cd線段上先找乙個點,在計算吧。
繼續yy這也是乙個下凸函式
所以又來一次三分
然後就蜜汁的做完了。
但是,這題也很迷,三分的時候請使用do-while
否則會有奇怪的資料,因為點挨得很近
導致三分沒有進行
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define esp 1e-5
inline
int read()
double a1,b1,a2,b2,lx,rx,ly,ry;
double ax,ay,bx,by,cx,cy,dx,dy;
double p,q,rr;
double dis(double x,double y,double x,double y)
double count(double xx,double yy)
while(fabs(lx-rx)>esp||fabs(ly-ry)>esp);
return ret;
}int main()
while(fabs(rx-lx)>esp||fabs(ry-ly)>esp);
printf("%.2lf\n",ans);
return
0;}
bzoj1857 傳送帶 三分
很早看到的三分法,竟然在今天用到了 顯然已我的智商是想不到的 然而發現自己並不會證明o o,但是除了最關鍵的一步其它還是會的 首先,我們用三分法,最基本的是要證明那個人一定是沿著如下路徑走的 從a沿著ab走一段,再穿越到cd上某一點,最後到終點。證明如下 不妨假設p q r,因為當r max p,q...
bzoj1857 傳送帶 三分套三分
我的第一道三分題目。早上跟著cyc學了一下三分,晚上想練一下手發現沒什麼水題就找到了這一道2333 主要是證明是乙個單峰函式,這也是本題最難的部分 網上好多人寫出來但不會證明 證明過程來自yyl dalao 本題要討論必使r從a點出發,要使解最優,必定要走a e f d,其中e是ab上一點,f為cd...
BZOJ 1857 傳送帶 三分套三分
time limit 1 sec memory limit 64 mb submit 1077 solved 575 submit status discuss 在乙個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段ab和線段cd。lxhgww在ab上的移動速度為p,在c...