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 }