題目鏈接:https://vjudge.net/problem/HDU-6581
題意:
有n+1輛車排成一列往終點行駛(行駛過程中不能超車),每輛車有各自的車長、離停止線的距離和車速,你的車在最後一個位置,問你的車頭到達停止線所需的最少時間。
思路:
每一輛車都需要爲後面的車輛騰出一定的距離(距離停止線的長度加上後面所有車(除最後一輛車)的車身長度),以至於每輛車都能通過停止線。計算出每一輛車行駛出這段距離的最大時間,即爲你的車頭到達停止線所需的最少時間。
代碼:
#include<bits/stdc++.h>
#define ll long long
#define N 1008611
#define inf 0x3f3f3f3f
using namespace std;
int l[100010],s[100010],v[100010];
double len[100010];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0; i<n+1; i++)
scanf("%d",&l[i]);
for(int i=0; i<n+1; i++)
scanf("%d",&s[i]);
for(int i=0; i<n+1; i++)
scanf("%d",&v[i]);
double maxx=1.0*s[0]/v[0];
len[0]=0.0;
for(int i=1; i<n+1; i++)
len[i]=len[i-1]+l[i];
for(int i=1; i<n+1; i++)
if((len[i]+s[i])*1.0/v[i]>maxx)
maxx=(len[i]+s[i])*1.0/v[i];
printf("%.7f\n",maxx);
}
return 0;
}