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
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;
}