UVa 12230 Crossing Rivers (数学期望水题)
Posted dwtfukgv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 12230 Crossing Rivers (数学期望水题)相关的知识,希望对你有一定的参考价值。
题意:你要从A到B去上班,然而这中间有n条河,距离为d。给定这n条河离A的距离p,长度L,和船的移动速度v,求从A到B的时间的数学期望。
并且假设出门前每条船的位置是随机的,如果不是在端点,方向也是不定的,你在陆地行走速度为1,输入保证河在AB之前,并且不会重叠。
析:一看这个题,好像不会啊。。。这怎么求,这么乱,这么复杂。。。
但是仔细一想求时间期望,不就是在过河的地方时间不是固定的么,只要求出过河的时间的数学期望,利用数学期望的线性,加起来就OK了。
这样一想感觉就不乱了,那么怎么求每个河的时间呢,题目说了都是船都是随机的,可以认为是等概率的,那么过河的最短时间就是L/v,正好到河边船正好过来,
最长时间就是3*L/v,也就是他刚到河边,船刚走,最后再加上在陆地的时间就OK了。
代码如下:
#include <iostream> #include <cstring> #include <vector> #include <algorithm> #include <cstdio> using namespace std; int main(){ int n, d, kase = 0; while(scanf("%d %d", &n, &d)){ if(!d && !n) break; double ans = (double)d; for(int i = 0; i < n; ++i){ double p, l, v; scanf("%lf %lf %lf", &p, &l, &v); ans = ans - l + 2 * l / v;//由于在陆地的速度是1,所以不用除了 } printf("Case %d: %.3lf\n\n", ++kase, ans); } return 0; }
以上是关于UVa 12230 Crossing Rivers (数学期望水题)的主要内容,如果未能解决你的问题,请参考以下文章
Uva12230Crossing Rivers (数学期望)
『UVA 12230』Crossing Rivers (简单期望)