题目链接:点击打开链接
题目大意:新的一项运动是由骑车和跑步组成的,总长度是固定的,但是和骑车与跑步的长度比例是裁判员自己定的,每一位选手都有两个速度(骑车和跑步),最后一名选手贿赂 了裁判员,求算出最后一名选手能否得冠,然后计算出所需要的时间以及裁判员所决定的长度
AC Code:
//明确要求的函数是什么
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn = 25;
double r[maxn], k[maxn];
int n;
double t;
double f(double x)
{
double temp = x / r[1] + (t-x)/k[1];
for(int i = 2; i < n; i++)
temp = min(temp, x/r[i] + (t-x)/k[i]);
//return temp;
return temp - (x/r[n] + (t-x)/k[n]);
}
double Search(double left, double right)
{
//for(int i = 0; i < 100; i++)
while (right-left > 1e-4)
{
double mid = (left+right)/2;
double mmid = (mid+right)/2;
if(f(mid) < f(mmid))
left = mid;
else
right = mmid;
}
return left;
}
int main()
{
while(scanf("%lf", &t) != EOF)
{
scanf("%d", &n);
for(int i = 1; i <= n; i++) //注意是从1开始变化
scanf("%lf %lf", &r[i], &k[i]);
double x = Search(0, t);
double xx = f(x);
if(xx < 0)
printf("The cheater cannot win.\n");
else
printf("The cheater can win by %.0lf seconds with r = %.2lfkm and k = %.2lfkm.\n", xx*3600, x, t-x);
}
return 0;
}
本文介绍了一种通过调整自行车和跑步距离比例来使特定选手赢得比赛的方法,并提供了计算所需时间及距离的具体实现代码。
1610

被折叠的 条评论
为什么被折叠?



