简介:
有个人去上班的路上会经过N条河,家和公司的距离为D,默认在陆地的速度为1,给出N条河的信息,包括起始坐标p,宽度L,以及船的速度。船会往返在河的两岸,人到达河岸是,船的位置是随机的(包括方向)。问达到公司所需要的期望时间。
分析:
人在路上花费的时间是一定的:D-sum(L)
当我们到达了河边之后,最好的情况是船正好靠岸,这时候只需要L/v的时间即可
最坏情况是船刚刚离开,我们到达对岸所需的时间就是3L/v
其余情况都是在这个范围之间的
数学期望在一定程度上和平均数一样(等概率)
这道题中,我们通过一条河的时间期望就是(L/v+3L/v)/2=2L/v
所以答案就是Σ2*Li/vi+D-sum(L)
//这里写代码片
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,D;
int main()
{
int cnt=0;
while (scanf("%d%d",&n,&D)!=EOF&&D)
{
int S,L,v;
double sum=0;
for (int i=1;i<=n;i++)
{
scanf("%d%d%d",&S,&L,&v);
D-=L; //需要行走的时间
sum+=(double)2*L/v;
}
printf("Case %d: %0.3lf\n",++cnt,sum+(double)D);
printf("\n");
}
return 0;
}