Scoi2010 傳送帶(三分套三分 九分)

2021-08-30 06:34:37 字數 1098 閱讀 3125

描述

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

因為有兩個斷點需要列舉

所以單純的三分是沒法做到

考慮到如果我們已經固定了乙個斷點

那就可以三分求出另乙個斷點的最優值

那我們可以對這個斷點三分

然後對於每個三分的值再三分一次

然後......就是九分了

#includeusing namespace std;

#define ll long long

const double eps=1e-4;

inline int read()

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

inline double dis(double x1,double x2,double y1,double y2)

inline double calc(double x1,double x2,double y1,double y2)

inline double solve(double x,double y)

return calc(x,lx,y,ly);

}int main()

printf("%.2lf",solve(lx,ly));

}

SCOI2010 傳送帶(三分套三分)

第一次接觸三分演算法,我認為是比較好理解的。三分演算法用於求單峰函式的最值,與二分不同,二分用於求單調函式中趨近某個值的值。三分搜尋的實現主要是判斷midl和midr所在值的大小。以凸函式為例 凹函式類似,只是判mid大小的時候保留小的即可 其實也是保留離極值最近的mid 先以left和right為...

SCOI2010 傳送帶 三分答案

平面上有兩條傳送帶,在上面行走有一定的速度,在平面其他地方行走有一定速度,求從一條傳送帶一端走到另一條一端的時間。顯然在兩條傳送帶都走一段後走平面,當乙個轉折點確定後,距離就是乙個單峰函式,可以用三分解決,總的就是三分套三分。由於資料較小精度要求較小,可以暴力乙個轉折點再三分。include inc...

三分學習筆記 SCOI2010 傳送帶

在乙個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段ab和線段cd。lxhgww在ab上的移動速度為p,在cd上的移動速度為q,在平面上的移動速度r。現在lxhgww想從a點走到d點,他想知道最少需要走多長時間 終於敢說我會三分了 本題是三分套三分的經典例題 分別在兩個...