包裹快遞 jzoj1396 二分

2021-07-30 06:32:06 字數 920 閱讀 4454

小k成功地破解了密文。但是乘車到x國的時候,發現錢包被偷了,於是無奈之下只好作快遞員來攢足路費去orz教主……

乙個快遞公司要將n個包裹分別送到n個地方,並分配給郵遞員小k乙個事先設定好的路線,小k需要開車按照路線給的地點順序相繼送達,且不能遺漏乙個地點。小k得到每個地方可以簽收的時間段,並且也知道路線中乙個地方到下乙個地方的距離。若到達某乙個地方的時間早於可以簽收的時間段,則必須在這個地方停留至可以簽收,但不能晚於簽收的時間段,可以認為簽收的過程是瞬間完成的。

為了節省燃料,小k希望在全部送達的情況下,車的最大速度越小越好,就找到了你給他設計一種方案,並求出車的最大速度最小是多少。

最大值最小就要想到二分答案了

我們二分乙個速度然後按照速度模擬一遍看看是否滿足條件就可以了

關於精度問題,開long double能解決的就不深入糾結了

#include 

#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)

#define min(x, y) (x)<(y)?(x):(y)

#define max(x, y) (x)>(y)?(x):(y)

#define db long double

#define eps 0.0001

#define n 300001

int x[n], y[n], t[n];

inline int check(db p, int n)else

if (now < x[i])

}return1;}

int main(void)

db mid;

while (r - l >= eps)else

}printf("%.2f\n", mid);

return

0;}

Vijos 包裹快遞 二分

背景 小k成功地破解了密文。但是乘車到x國的時候,發現錢包被偷了,於是無奈之下只好作快遞員來攢足路費去orz教主 乙個快遞公司要將n個包裹分別送到n個地方,並分配給郵遞員小k乙個事先設定好的路線,小k需要開車按照路線給的地點順序相繼送達,且不能遺漏乙個地點。小k得到每個地方可以簽收的時間段,並且也知...

JZOJ 二分 抄書

與書的複製差不多 洛谷 書的複製 但是只要輸出最大的時間 樣例輸入9 3 100 200 300 400 500 600 700 800 900樣例輸出1700樣例解釋1 1500 100 200 300 400 500 2 1300 600 700 3 1700 800 900 1300 1500...

(dijkstra,二分答案)P1396 營救

這道題讓筆者想起了通往奧格瑞瑪的道路這道題,可以說是有異曲同工之妙了。首先題目明確說明了,求最大值最小。一般這樣的就與二分答案有關,於是我們記錄下來每條邊的長度,答案一定是這些長度中的乙個,然後將各邊的長度排序,二分答案就行了 相當於套乙個二分答案的板子和乙個dijkstra的板子 細節處理在 注釋...