平面上有兩條傳送帶,在上面行走有一定的速度,在平面其他地方行走有一定速度,求從一條傳送帶一端走到另一條一端的時間。顯然在兩條傳送帶都走一段後走平面,當乙個轉折點確定後,距離就是乙個單峰函式,可以用三分解決,總的就是三分套三分。由於資料較小精度要求較小,可以暴力乙個轉折點再三分。
//#include
#include
#include
#include
#include
#define lf double
#define ll long long
#define fo(i,j,k) for(int i=j;i<=k;i++)
#define fd(i,j,k) for(int i=j;i>=k;i--)
using namespace std;
int const inf=
2147483647;
int ax,ay,bx,by,cx,cy,dx,dy,p,q,r;
lf coun(lf x,lf y,lf xx)
lf coun2(lf x,lf y,lf yy)
int main()
lf lx=
min(ax,bx),rx
=max(ax,bx),bi=
0.01,anss=inf;
lf ansx=lx,ans=inf;
for(lf x=lx;x<=
rx;x+=bi)
if(sqrt((x-ax)*(x-ax)+(y-ay)*(y-ay))/p+coun(x,y,ll)}else
if(sqrt((x-ax)*(x-ax)+(y-ay)*(y-ay))/p+coun2(x,y,ll)}
}anss=
min(anss,ans);
lx=max(ax*
1.0,ansx-bi
*30);rx
=min(bx*
1.0,ansx+bi*
30);bi/=
10; printf("%.2lf",anss);
return
0;}
SCOI2010 傳送帶(三分套三分)
第一次接觸三分演算法,我認為是比較好理解的。三分演算法用於求單峰函式的最值,與二分不同,二分用於求單調函式中趨近某個值的值。三分搜尋的實現主要是判斷midl和midr所在值的大小。以凸函式為例 凹函式類似,只是判mid大小的時候保留小的即可 其實也是保留離極值最近的mid 先以left和right為...
三分學習筆記 SCOI2010 傳送帶
在乙個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段ab和線段cd。lxhgww在ab上的移動速度為p,在cd上的移動速度為q,在平面上的移動速度r。現在lxhgww想從a點走到d點,他想知道最少需要走多長時間 終於敢說我會三分了 本題是三分套三分的經典例題 分別在兩個...
Scoi2010 傳送帶(三分套三分 九分)
描述 在乙個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段ab和線段cd。lxhgww在ab上的移動速度為p,在cd上的移動速度為q,在平面上的移動速度r。現在lxhgww想從a點走到d點,他想知道最少需要走多長時間 輸入輸入資料第一行是4個整數,表示a和b的座標,分別...