标签:期望 rap map cas inf algo col pen vector
题目大意:A,B相距D,A,B间有n条河,河宽Li,每条河上有一个速度为vi的船,在河山来回行驶,每条河离A的距离为pi,现在求从A到B时间的期望,步行速度始终为1
题目分析:首先如果全部步行则期望为D,现在每遇到一条河,求过河时间的期望,等待时间的区间为(0,2*L/v) (不用等就能走,到达河左边时船恰好走),船在每个地方都是等可能的 即符合均匀分布,而均匀分布U(a,b)的数学期望为 E(x)=(a+b)/2 ,所以等待的期望就是(0 + 2*L/v) / 2 = L / v,又过河还要L / v,所以总的渡河期望值为2 * L / v,所以每遇到一条河拿D减去假设步行过河的期望L再加上实际过河期望2 * L / v即可
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #include <stack> #include <queue> #include <algorithm> #include <cmath> #define rap(a, n) for(int i=a; i<=n; i++) #define MOD 2018 #define LL long long #define ULL unsigned long long #define Pair pair<int, int> #define mem(a, b) memset(a, b, sizeof(a)) #define _ ios_base::sync_with_stdio(0),cin.tie(0) //freopen("1.txt", "r", stdin); using namespace std; const int maxn = 10010, INF = 0x7fffffff; int main() { int n, p, l, v, kase = 0; double res; while(~scanf("%d%lf", &n, &res) && n + res) { rap(1, n) { scanf("%d%d%d", &p, &l, &v); res -= l; res += 2 * l / (double)v; } printf("Case %d: %.3f\n\n", ++kase, res); } return 0; }
Crossing Rivers HDU - 3232 (均匀分布)
标签:期望 rap map cas inf algo col pen vector
原文地址:https://www.cnblogs.com/WTSRUVF/p/9352856.html