hdu 3232 Crossing Rivers

来源:互联网 发布:数据接口程序 编辑:程序博客网 时间:2024/06/05 16:14

题目链接: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;}