UVA12230 过河 Crossing Rivers

UVA12230 过河 Crossing Rivers

题目传送门

题目大意:有个人准备坐速度为 vv 的船过宽度为 LL 河,船是不断处于往返两个河岸过程中的。当他到达河岸时,船随机在某一个位置。求期望过河时间。

概率和期望入门。

首先我们可以知道过河的最坏情况就是船在对岸,那么这样的话船就要走三趟,时间为 3×LV\frac{3 \times L}{V},最好时就是船刚刚好在当前自己靠岸的位置,时间为 LV\frac{ L}{V},所以我们不难得到时间是在 3×LV\frac{3 \times L}{V}LV\frac{ L}{V} 之间均匀随机的,所以期望时间就是 2×LV\frac{2 \times L}{V}

注意来的时候有一段路程,需要减去。

还有所有的变量均要使用双精度浮点型。

最重要的是:输出要换两次行!!(我也不知道为什么)

code:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,d;
	int now=0;
	while(cin>>n>>d)
	{
		now++;
		double ans=(double)d;
		if(n==0&&d==0)
			break;
		for(int i=1;i<=n;i++)
		{
			int p,L,v;
			cin>>p>>L>>v;
			ans-=(double)L;
			ans+=(double)L/v*2;
		}
		cout<<"Case "<<now<<": ";
		cout<<fixed<<setprecision(3)<<ans<<endl<<endl;
	}
}
posted @ 2022-07-21 14:59  June_Failure  阅读(10)  评论(0)    收藏  举报  来源