题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3232
2009 Asia Wuhan Regional Contest Hosted by Wuhan University
题意:题意很清楚,一个人叫acmer吧,要从A点到B点,中间有n条河流,现给出acmer在陆地的速度恒为1,河流的宽度与船在此河流中的速度及河流的位置。
题中说明河流都一定在A、B点之间,并且不会重叠。船初始的位置是随机的。要求求出acmer从A到B用时的期望(就是平均值)。
分析:其实经过简单分析就发现,给出河流的位置没有用,我们只需要记录一下所有河流的总宽度,便可算出在陆地的用时t1,这个用时是不变的,对期望没有影响。然后计算acmer分别在每个河流的平均用时,平均用时的求法是先算出船在河流中出现的所有情况的期望点是L/2处,向左右走的概率是想等的,到达左岸的两种情况平均距离是L,所以过河的平均距离是2L。
代码很简单,参考如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int n,d,casenum = 1;
while(scanf("%d%d",&n,&d) && n+d)
{
int p,l,v;
double exp = d;
for(int i = 0;i < n;++i)
{
scanf("%d%d%d",&p,&l,&v);
{
exp -= l;
exp += 2.0*l/v;
}
}
printf("Case %d: %.3lf\n\n",casenum++,exp);
}
return 0;
}