UVA 12230 - Crossing Rivers(期望)

题目链接 https://cn.vjudge.net/problem/UVA-12230

【题意】
你要从村庄A走到村庄B,B在A的右端,之间除了有陆地还有n条河流阻挡,每条河流上都有匀速行驶的小船,当你到达一条河的左岸时需要等待小船过来载你过河.已知每条船的速度V,每条河流的长度L,船的位置是随机均匀分布,并且在陆地上的行走速度为1,问从A到B的平均时间,河流不会相交.

【思路】
对于某条河流来说,最好的情况是人到达左岸的时候船刚好从左岸出发到右边,时间为 LV 最坏的情况是人到达左岸时船刚好从左岸离去,需要等一个来回的时间,过河所需时间为 3LV,所以平均过河时间为2LV,求和时候加上陆地行走时间即可。

#include<bits/stdc++.h>
using namespace std;

int n,D;

int main(){
    int kase=0;
    while(scanf("%d%d",&n,&D)==2){
        if(0==n && 0==D) break;
        double ans=0;
        for(int i=0;i<n;++i){
            int p,len,v;
            scanf("%d%d%d",&p,&len,&v);
            ans+=double(len*2)/v;
            D-=len;
        }
        ans+=D;
        printf("Case %d: %.3lf\n\n",++kase,ans);
    }
    return 0;
}
posted @ 2018-08-23 20:52  不想吃WA的咸鱼  阅读(139)  评论(0编辑  收藏  举报