2019 Multi-University Training Contest 1------Vacation

題目鏈接: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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章