2020.6.16 night 解题报告

2020.6.16 night 解题报告 link

标签(空格分隔): 题解 概率与期望


T1 : Crossing Rivers UVA - 12230

SB题。
很唬人的一个连续期望。
很明显,在一条河上,等待一条船的期望是最短时间和最长时间的平均值。
所以这道题的答案,一定是这样一个式子:
\(\sum_{i = 1} ^ {n} 2\frac{L_i}{V_i} + D-\sum_{i=1}^{n}L_i\)
输出格式,多组数据

T2 : Kids and Prizes SGU-495

推式子有点怪。
\(dp_i\)为当前i人选完后剩下的期望,容易知道\(dp_0=n\)
$dp_i = dp_{i-1} - \frac{dp_{i - 1}}{n} \( 为什么呢? 因为在每一个人的选择过程中,选得到期望\)\frac{dp_{i-1}}{{n}}\(的东西 剪掉。 最后的结果就是\)n-dp_m$

T3 : Maze HDU - 4035

看一下别人的题解8

T4 : LOOPS HDU - 3853

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 5;
int n, m;
double p[maxn][maxn][3];
double dp[maxn][maxn];
int main () {
	while(scanf("%d%d", &n, &m) != EOF) {
		dp[n][m] = 0;
		for(int i = 1;i <= n;i ++) {
			for(int j = 1;j <= m;j ++) {	
				scanf("%lf%lf%lf", &p[i][j][1], &p[i][j][2], &p[i][j][3]);
			}
		}
		for(int i = n;i >= 0;i --) {
			for(int j = m;j >= 0;j --) {
				if(i == n && j == m) continue;
				if(p[i][j][1]==1) continue;
				dp[i][j] = (p[i][j][2] * dp[i][j + 1] + p[i][j][3] * dp[i + 1][j] + 2.0) / (1.0 - p[i][j][1]);
			} 
		}
		printf("%.3lf\n", dp[1][1]);
	}
	return 0;
} 

猜你喜欢

转载自www.cnblogs.com/yangxuejian/p/13170387.html