Crossing Rivers UVA - 12230

题意:你住在村庄A,每天需要过很多条河到村庄B去,B在A的右边,所有的河都在中间。幸运的是,每条河上都有匀速移动的自动船,因此每当

到达一条河的左岸时只需等船过来,载着你过河,然后在右岸下船。问:从A到B,平均情况下需要多长时间?假设在出门时所有船的位置都是随

机均匀分布的。如果位置不是在河的端点,则朝向也是随机的。在陆地上行走的速度时1.

题解:用数学期望的线性。过每条河的时间为 l/v 到 3l/v 的均匀分布,因此每条河期望过河时间 2l/v 。

--------------------------------摘自《算法竞赛入门经典》

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 
 7 int n;
 8 double d,p,l,v;
 9 
10 int main()
11 {   int kase=1;
12     while(~scanf("%d%lf",&n,&d)){
13         if(n==0&&d==0) break;
14         for(int i=0;i<n;i++){
15             scanf("%lf%lf%lf",&p,&l,&v);
16             d=d-l+2*l/v;
17         }
18         printf("Case %d: %.3lf\n\n",kase++,d);
19     }
20     return 0;
21 } 

 

posted @ 2017-08-14 22:41  天之道,利而不害  阅读(213)  评论(0编辑  收藏  举报