UVA 12230 - Crossing Rivers(期望)
题目链接 https://cn.vjudge.net/problem/UVA-12230
【题意】
你要从村庄A走到村庄B,B在A的右端,之间除了有陆地还有n条河流阻挡,每条河流上都有匀速行驶的小船,当你到达一条河的左岸时需要等待小船过来载你过河.已知每条船的速度V,每条河流的长度L,船的位置是随机均匀分布,并且在陆地上的行走速度为1,问从A到B的平均时间,河流不会相交.
【思路】
对于某条河流来说,最好的情况是人到达左岸的时候船刚好从左岸出发到右边,时间为 最坏的情况是人到达左岸时船刚好从左岸离去,需要等一个来回的时间,过河所需时间为 ,所以平均过河时间为,求和时候加上陆地行走时间即可。
#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;
}