包裹快遞 題解

2022-06-02 16:15:12 字數 1977 閱讀 8519

包裹快遞

【問題描述】

乙個快遞公司要將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 "

cstdio

"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 }

view code

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 該如何移動 針對以上三個問題,...