洛谷 1542 快遞包裹

2021-08-09 04:33:59 字數 1625 閱讀 9329

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

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

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

輸入格式:

第1行為乙個正整數n,表示需要運送包裹的地點數。

下面n行,第i+1行有3個正整數xi,yi,si,表示按路線順序給出第i個地點簽收包裹的時間段為[xi, yi],即最早為距出發時刻xi,最晚為距出發時刻yi,從前乙個地點到達第i個地點距離為si,且保證路線中xi遞增。

可以認為s1為出發的地方到第1個地點的距離,且出發時刻為0。

輸出格式:

僅包括乙個整數,為車的最大速度最小值,結果保留兩位小數。

輸入樣例#1:

3 1 2 2

6 6 2

7 8 4

輸出樣例#1:

2.00

說明對於20%的資料,n≤10;

對於30%的資料,xi,yi,si≤1000。

對於50%的資料,n≤1000;

對於100%的資料,n≤200000;xi≤yi≤10^8;si≤10^7。

第一段用1的速度在時間2到達第1個地點,第二段用0.5的速度在時間6到達第2個地點,第三段用2的速度在時間8到達第3個地點。

/**************************

name:包裹快遞

how to get:luogu.org

by:shine_sky

**************************/

/*******************************

這道題 二分練習題

我只想吐槽

printf有毒!printf有毒!

printf有毒!printf有毒!

printf有毒!printf有毒!

*******************************/

#include#include#include#define ld long

double

#define f(i,a,b) for(register int i=a;i<=b;i++)

#define fd(i,a,b) for(register int i=a;i>=b;i--)

using namespace std;

inline int read()

inline void write(int x)

const

int n=200000+7;

int n=read(),sum;

struct a

a[n];

inline bool pd(ld x)

return1;}

int main()

cout<2)0;}

洛谷 P1542 包裹快遞

一看到最小的最大就能知道是二分啦 對於這道題,我們要二分的值肯定是可以知道的 行駛速度,因為求的是速度,而邊界條件就為 0 和最大的速度也就是路程總和了,對於精度,一般開在題目要求的精度上加 4 就行。cheak 函式當然就是看以這個速度行走,能否到達終點即可。注意 題目雖然是說每一次的速度可以不一...

洛谷 P1542 包裹快遞

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

Luogu P1542 包裹快遞

原題鏈結qwq 本題要求我們求出車的最大速度最小值。像求最大值最小 最小值最大這種型別的題目,我們很自然地就能想 到用二分答案 一般情況 來求解。做二分題目時,我們要弄清楚這樣幾點 二分什麼 如何判斷是否可行 即check函式的內容 當二分到乙個滿足條件的解時,l r 該如何移動 針對以上三個問題,...