过任意一条河的时间t: l/v<=t<=3l/v(船在left+无穷小&&朝向右),过河时间在[l/v,3l/v]上均匀分布
所以过任意一条河的时间的期望为: 2l/v
在岸上时间是参数为D-l
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=1e3+20;
struct node{
double p,l,v;
// pos,len,speed
}b[N];
int main()
{
int cas=0;
int n;
double D;
while(cin>>n>>D&&n+D)
{
double E=0,l=0;
for(int i=0;i<n;i++)
{
cin>>b[i].p>>b[i].l>>b[i].v;
l+=b[i].l;//河流lenth
E+=(b[i].l*2.0)/b[i].v;
}
E+=(D-l);
printf("Case %d: %.3lf\n\n",++cas,E);
}
return 0;
}

本文介绍了一种解决过河问题的方法,通过计算过每条河的期望时间和在岸上的等待时间来得出总期望时间。文章提供了一个C++实现示例,展示了如何输入河流参数并计算最终结果。
817

被折叠的 条评论
为什么被折叠?



