UVA12230 过河 Crossing Rivers

题目描述

一个人每天需要从家去往公司,然后家与公司的道路是条直线,长度为 \(D\)。 同时路上有 \(N\)条河,给出起点和宽度\(W_i\) , 过河需要乘坐速度为\(V_i\) 的渡船; 船在河中的位置随机,固定往返时间. 且该人在陆地上行走速度为 \(1\) .求该人去公司的路途的期望时间。

输入输出样例

输入样例#1:

1 1
0 1 2
0 1
0 0

输出样例#1:

Case 1: 1.000
Case 2: 1.000

思路:过一条河最坏用时为\(3l/v\),即到河边时船正好走了,最优用时为\(l/v\),即到河边是恰好赶上船。然后因为时间满足线性关系,所以平均期望用时为\(2l/v\),然后再加上步行需要的用时即可,还有一个比较坑的地方是要输出两个换行符。

代码:

#include<cstdio> 
#define dl double 
int n,js; 
dl ans,d,p,l,v; 
int main() { 
  while(scanf("%d%lf",&n,&d)==2) { 
    if(!d) break; 
    ans=0; 
    for(int i=1;i<=n;++i) { 
      scanf("%lf%lf%lf",&p,&l,&v); 
      d-=l; ans+=2*l/v; 
    }
    printf("Case %d: %0.3lf\n\n",++js,ans+d);
  } 
  return 0;
}
posted @ 2019-05-03 09:04  King丨帝御威  阅读(214)  评论(0编辑  收藏  举报
/*
*/