BZOJ 1857 傳送帶 三分套三分

2022-05-20 09:32:12 字數 1345 閱讀 6918

time limit: 1 sec  memory limit: 64 mb

submit: 1077  solved: 575

[submit][status][discuss]

在乙個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

day2

三分法,用於求單峰函式的極值問題,思路很好想

給定左右端點l,r;找出兩個三等分點m1,m2(l<=m1<=m2<=r),如果m1比m2更優,則l=m1,否則r=m2

這道題,首先,關係很好找,發現是單峰函式,那麼三分找最值即可

不過這裡的話用到三分套三分,也非常好理解

對於外層三分出的m1,m2,如果比較大小,需要內部再進行三分來確定,這就是三分套三分

#include#include

#include

#include

#include

using

namespace

std;

intread()

while (ch>='

0' && ch<='

9')

return x*f;

}#define eps 1e-3

intax,ay,bx,by,cx,cy,dx,dy,p,q,r;

double dist(double x1,double y1,double x2,double

y2)double calc(double x,double

y)

return dist(ax,ay,x,y)/p+dist(x,y,lx,ly)/r+dist(lx,ly,dx,dy)/q;

}int

main()

printf(

"%.2lf\n

",calc(lx,ly));

return0;

}

我會說因為變數重名wa了3發嗎....a sad story...

bzoj1857 傳送帶 三分套三分

我的第一道三分題目。早上跟著cyc學了一下三分,晚上想練一下手發現沒什麼水題就找到了這一道2333 主要是證明是乙個單峰函式,這也是本題最難的部分 網上好多人寫出來但不會證明 證明過程來自yyl dalao 本題要討論必使r從a點出發,要使解最優,必定要走a e f d,其中e是ab上一點,f為cd...

BZOJ 1857 傳送帶 三分套三分

在乙個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段ab和線段cd。lxhgww在ab上的移動速度為p,在cd上的移動速度為q,在平面上的移動速度r。現在lxhgww想從a點走到d點,他想知道最少需要走多長時間 input 輸入資料第一行是4個整數,表示a和b的座標,分...

bzoj1857 傳送帶 三分

很早看到的三分法,竟然在今天用到了 顯然已我的智商是想不到的 然而發現自己並不會證明o o,但是除了最關鍵的一步其它還是會的 首先,我們用三分法,最基本的是要證明那個人一定是沿著如下路徑走的 從a沿著ab走一段,再穿越到cd上某一點,最後到終點。證明如下 不妨假設p q r,因為當r max p,q...