#include<cstdio>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
double t,v1[100],v2[100];
double cal(double r){
double res=100000000,k=t-r;
double s=r/v1[n-1]+k/v2[n-1];
for(int i=0;i<n-1;i++){
double t1=r/v1[i]+k/v2[i];
res=min(res,t1-s);
}
return res;
}
int main(){
while(scanf("%lf",&t)==1){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%lf%lf",&v1[i],&v2[i]);
}
double l=0,r=t;
for(int i=0;i<100;i++){
double ml=l+(r-l)/3;
double mr=r-(r-l)/3;
if(cal(ml)>cal(mr))
r=mr;
else
l=ml;
}
if(cal(l)<=0.0)
printf("The cheater cannot win.\n");
else
printf("The cheater can win by %.0lf seconds with r = %.2fkm and k = %.2fkm.\n", cal(l) * 3600, l, t - l);
}
}
uva 10385 一个单峰函数(由min(很多一次函数)构成)和一个一次函数的差值 也是单峰函数
最新推荐文章于 2024-04-30 10:06:04 发布