包裹快遞
【問題描述】
乙個快遞公司要將n個包裹分別送到n個地方,並分配給郵遞員小k乙個事先設定好的路線,小k需要開車按照路線給的地點順序相繼送達,且不能遺漏乙個地點。小k得到每個地方可以簽收的時間段,並且也知道路線中乙個地方到下乙個地方的距離。若到達某乙個地方的時間早於可以簽收的時間段,則必須在這個地方停留至可以簽收,但不能晚於簽收的時間段,可以認為簽收的過程是瞬間完成的。
為了節省燃料,小k希望在全部送達的情況下,車的最大速度越小越好,就找到了你給他設計一種方案,並求出車的最大速度最小是多少。
【輸入格式】
輸入檔案express.in的第1行為乙個正整數n,表示需要運送包裹的地點數。
下面n行,第i+1行有3個正整數xi,yi,si,表示按路線順序給出第i個地點簽收包裹的時間段為[xi, yi],即最早為距出發時刻xi,最晚為距出發時刻yi,從前乙個地點到達第i個地點距離為si,且保證路線中xi遞增。
可以認為s1為出發的地方到第1個地點的距離,且出發時刻為0。
【輸出格式】
輸出檔案express.out僅包括乙個數,為車的最大速度最小值,結果保留兩位小數。
【輸入樣例】
1 2 2
6 6 2
7 8 4
【輸出樣例】
2.00
【樣例解釋】
第一段用1的速度在時間2到達第1個地點,第二段用0.5的速度在時間6到達第2個地點,第三段用2的速度在時間8到達第3個地點。
【資料範圍】
對於20%的資料,n≤10;
對於30%的資料,xi,yi,si≤1000。
對於50%的資料,n≤1000;
對於100%的資料,n≤200000;xi≤yi≤108;si≤107
———————————————分割線———————————————
二分答案即可,有乙個資料會神奇的卡精度,long double用可以避免。
1 #include "view codecstdio
"2 #include "
algorithm"3
4using
namespace
std ;
5const
double eps = 1e-4;6
const
int maxn = 100100;7
const
double maxnum = 1e8 + 1e-4;8
9int
x [ maxn ] , y[ maxn ] , s[ maxn ] ;
10int
n ;
1112
intinput ( )
15while ( ch >= '
0' && ch <= '
9' )
16return x *f ; 17}
1819
bool check( long
double
ans_ )
2028
return
true;29
}3031int
main ( )
40long
double r = maxnum , l = 0.0000;41
while ( r - l >=eps )
46double ans =l ;
47 printf ( "
%.2lf
", ans ) ;
48fclose ( stdin ) ;
49fclose ( stdout ) ;
50return0;
51 }
2016-10-17 22:56:05
洛谷 1542 快遞包裹
小k成功地破解了密文。但是乘車到x國的時候,發現錢包被偷了,於是無奈之下只好作快遞員來攢足路費去orz教主 乙個快遞公司要將n個包裹分別送到n個地方,並分配給郵遞員小k乙個事先設定好的路線,小k需要開車按照路線給的地點順序相繼送達,且不能遺漏乙個地點。小k得到每個地方可以簽收的時間段,並且也知道路線...
Vijos 包裹快遞 二分
背景 小k成功地破解了密文。但是乘車到x國的時候,發現錢包被偷了,於是無奈之下只好作快遞員來攢足路費去orz教主 乙個快遞公司要將n個包裹分別送到n個地方,並分配給郵遞員小k乙個事先設定好的路線,小k需要開車按照路線給的地點順序相繼送達,且不能遺漏乙個地點。小k得到每個地方可以簽收的時間段,並且也知...
Luogu P1542 包裹快遞
原題鏈結qwq 本題要求我們求出車的最大速度最小值。像求最大值最小 最小值最大這種型別的題目,我們很自然地就能想 到用二分答案 一般情況 來求解。做二分題目時,我們要弄清楚這樣幾點 二分什麼 如何判斷是否可行 即check函式的內容 當二分到乙個滿足條件的解時,l r 該如何移動 針對以上三個問題,...