题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=6581
大致题意:你n+1辆汽车,每辆汽车有汽车的长度L,汽车距离终点的距离S,汽车的最大速度V
汽车与汽车之间距离为0时,速度大的汽车的速度会等于速度小的汽车的速度
求离终点最远的那辆车的车头到达终点的时间。
题解:第一辆车肯定会以这n+1辆车的某辆车的速度到达终点,所以就枚举一下这n+1辆车,求个时间的最大值即可。
#include <iostream>
#include<stdio.h>
using namespace std;
const int N = 1e5 + 10;
double s[N], v[N], l[N], sum[N];
int main() {
double ans;
int n;
while(~scanf("%d", &n)) {
for(int i = 1; i <= n + 1; i++) {
scanf("%lf", &l[i]);
sum[i] = sum[i - 1] + l[i];
}
for(int i = 1; i <= n + 1; i++)
scanf("%lf", &s[i]);
for(int i = 1; i <= n + 1; i++)
scanf("%lf", &v[i]);
ans=0;
for(int i = 1; i <= n + 1; i++) {
ans = max(ans, (s[i] + sum[i] - l[1]) / v[i]);
}
printf("%.10f\n", ans);
}
return 0;