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