题解 UVA12230 过河 Crossing Rivers

题解 UVA12230 过河 Crossing Rivers

题目翻译

题目大意

从家(\(A\))到公司(\(B\))的直线路段上有 \(n\) 条河,每条河有三个信息:和 \(A\) 的距离 \(p\)、宽度 \(L\),以及船在这条河上的速度 \(v\)船在两岸往返。 在陆地上的速度为 \(1\),求出从家到公司的期望时间。

题目思路

对于每条河,有最好和最坏两种情况:

  1. 最好:到达这条河时刚好坐上船,\(t= \frac{L}{v}\)

  2. 最坏:到达这条河时船刚刚走,\(t=3 \times \frac{L}{v}\)

仔细思考可以知道,船的发布是均匀的,可以利用期望的线性性质得到每条河的平均过河时间 \(t=2 \times \frac{L}{v}\)

期望的线性性质:

\(E(X+Y)=E(X)+E(Y)\)

\(E(aX)=aE(X)\)

\(X\)\(Y\) 相互独立时,\(E(XY)=E(X) \times E(Y)\)

设初始答案 \(ans\) 为全走陆地的时间 \(D\)
则每次输入时去河的长度 \(L\),加上渡河期望时间 \(2 \times\frac{L}{v}\) 即可。

\(Code\)

#include<bits/stdc++.h>
using namespace std;

int n,D;
int p,L,v;
int cnt=0;
double ans;

int main()
{
	while(scanf("%d%d",&n,&D))
	{
		if(n==0&&D==0) break;
		ans=D;
		for(int i=1;i<=n;i++)
		{
			scanf("%d%d%d",&p,&L,&v);
			ans-=L;
			ans+=(double)2*L/v;
		}
		printf("Case %d: %.3lf\n\n",++cnt,ans);
	}
	return 0;
}
posted @ 2021-03-02 15:20  Sure042  阅读(125)  评论(0编辑  收藏  举报