题解:P13165 [GCJ 2017 #1B] Steed 2: Cruise Control
kobebraint · · 题解
看题
A 一串字母这人要骑马从
怎么保证不会超过呢?我们要让 A 一串字母到达终点的时间 ≥ 前面的所有马到达终点的时间中的最大值。
如果 A 一串字母比其它马提前到了终点,那就说明她在中途超过了某匹更慢的马。
怎么做?
A 一串字母前面的每匹马从自己当前位置
这些马都会按自己的速度走,谁追上别人就降速,但是不用考虑减速的情况,你可以理解为追上前面的马和被追的马是一只马,会同时到达终点,所以只要知道每匹马自己单独跑到终点要多久就够了。设
上代码!
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define dot(x) fixed<<setprecision(x)
#define foru(a,b,c) for(ll a=b;a<=c;a++)
ll t,n,m,T,d;
int main(){
cin>>t;
T=t;
while(t--){
cin>>d>>n;
ld maxx=0;
foru(i,0,n-1){
ld k,s;
cin>>k>>s;
maxx=max(maxx,(d-k)/s);
}
cout<<dot(6)<<"Case #"<<T-t<<": "<<d/maxx<<endl;
}
return 0;
}