洛谷 P1542 包裹快遞

2022-03-19 07:07:27 字數 1052 閱讀 3113

一看到最小的最大就能知道是二分啦

對於這道題,我們要二分的值肯定是可以知道的:行駛速度,因為求的是速度,而邊界條件就為\(0\)和最大的速度也就是路程總和了,對於精度,一般開在題目要求的精度上加\(4\)就行。\(cheak\)函式當然就是看以這個速度行走,能否到達終點即可。注意:題目雖然是說每一次的速度可以不一樣,但是我們都按最大值的話,可以到達後等待一會兒,效果是一樣的。能達到\(r\)就往\(mid\)移,縮小,反之。

知道了這些後,**就好寫了:

#include using namespace std;

struct node;

int n;

double l , r , mid , eps = 1e-6;

node a[200010];

bool cheak(double speed)

if(time > a[i].t) return false; //無法到達

} return true;

}int main()

printf("%.2f" , l);

return 0;

}

交上去後,最後乙個點被卡了對吧,是精度問題,於答案差\(0.01\),咋辦?這時就要請出比double更厲害的型別,long double,所有都改成long double即可過。(注意,用scanf的話搭配的輸入應該是scanf("%lf"))。

ac**:

#include using namespace std;

struct node;

int n;

long double l , r , mid , eps = 1e-6;

node a[200010];

bool cheak(long double speed)

if(time > a[i].t) return false;

} return true;

}int main()

printf("%.2lf" , l);

return 0;

}

洛谷 P1542 包裹快遞

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

Luogu P1542 包裹快遞

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

洛谷 1542 快遞包裹

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