概率期望题单+解析

概率

A - I NEED A OFFER!

HDU - 1203

背包问题。目标是让“没有任何学校录取”的概率最小。
\(dp[v]\) 为花费 \(v\) 时全部落选的最小概率,转移:

\[dp[v] = \min\big(dp[v],\ dp[v - a[j]] \times (1 - p[j])\big) \]

B - ssworld VS DDD

HDU - 3076

预处理单局非平局的胜率 \(p\) 与败率 \(q\)\(p+q=1\))。
\(dp[i][j]\) 表示 A 还需赢 \(i\) 局、B 还需赢 \(j\) 局时 A 最终获胜的概率。

\[dp[i][j] = \frac{p}{p+q}\,dp[i-1][j] + \frac{q}{p+q}\,dp[i][j-1] \]

C - Passage

HDU - 3366

选择最优策略:比较两扇门 \(a\)\(b\)
\(a\) 优于 \(b\),则

\[p_a + (1-p_a-q_a)p_b > p_b + (1-p_b-q_b)p_a \]

化简得 \(\displaystyle\frac{p_a}{q_a} > \frac{p_b}{q_b}\)
有钱时同理:只要钱没用完都可以重走,因而应“爱财”,尽量用更少的钱换更大的走出去概率。
\(\frac{p}{q}\) 降序排序后直接计算答案即可。

D - 糖果大战

HDU - 1204

赌徒破产模型。设 \(p\) 为非平局获胜概率,\(q=1-p\) 为失败概率。
\(f_i\) 表示 A 有 \(i\) 颗糖果时最终获胜的概率,边界 \(f_0=0,\ f_{n+m}=1\)
状态转移:

\[f_i = p\,f_{i+1} + q\,f_{i-1} \qquad (0<i<n+m) \]

移项并构造差分 \(g_i = f_i - f_{i-1}\),得 \(\displaystyle g_{i+1} = \frac{q}{p}\,g_i\)
\(k = \frac{q}{p}\),则 \(g_i = k^{i-1} g_1\)
\(\sum_{i=1}^{n+m} g_i = f_{n+m} - f_0 = 1\)\(g_1 = \frac{1-k}{1-k^{n+m}}\)
最终 A 获胜概率:

\[f_n = \sum_{i=1}^n g_i = \frac{1-k^n}{1-k^{n+m}} \]

E - Maximum Random Walk

HDU - 4487

状态 \(dp[i][j][k]\):走了 \(i\) 步,当前位置 \(j\),历史最右位置 \(k\) 的概率。
暴力计算所有状态的期望即可。

F - Bad Luck Island

CodeForces - 540D

\(1\le a,b,c \le 100\),范围很小。
直接做三次 DP,每次计算一种生物存活的概率。

G - Walk

HDU - 5001

求不经过某点的概率较复杂,改为计算经过的概率。
枚举目标点,计算被经过的概率;为避免重复,将到达该点的路径截断(概率置 0),逐次累加即可。

H - Black Jack

HDU - 5602

庄家的策略是:只要未爆牌且点数不低于玩家,就继续拿牌。
因此玩家的最终点数会影响庄家的胜负。
先 DP 出玩家达到各点数的概率,再 DP 庄家面对该点数的失败概率,最后玩家选取最优决策下的获胜概率。

I - Hearthstone

HDU - 5816

题目求的是这一局的概率,所有排列构成基础事件空间。
不能仅以手牌类别计数,必须考虑抽取顺序,因而直接对牌库的全排列进行 DP。


期望

A - Race to 1 Again

LightOJ - 1038

常规期望 DP:

\[dp[i] = 1 + \frac{1}{cnt(i)}\sum_{d\mid i} dp[d] \]

将右边的 \(dp[i]\) 项移项即可求解。

B - LOOPS

HDU - 3853

二维网格上的类似期望 DP。

C - Ilya and Escalator

CodeForces - 518D

\(dp[i][j]\) 表示第 \(i\) 秒时电梯里有 \(j\) 个人的概率。
最终期望为 \(\sum_{j} dp[t][j] \times j\)

D - PLEASE

CodeForces - 697E

\(ans_i\) 为第 \(i\) 次后符合要求的概率,\(f_i\) 为分子。
总方案数为 \(2^i\),有递推:

\[ans_i = \frac{f_i}{2^i} = \frac{2^{i-1} - f_{i-1}}{2^i} = \frac12(1 - ans_{i-1}) \]

构造等比数列解出通项:

\[ans_i = -\left(-\frac12\right)^{i-1}\cdot\frac13 + \frac13 \]

\(i\) 为奇数时 \(ans_i = \frac{2^{i-1}-1}{2^{i-1}\times 3}\),分子、分母中含因子 3,直接求逆元处理即可;偶数时类似。

E - Permutation Bo

HDU - 5753

计算每个位置成为前缀最大值的概率,再乘上该位置的数值求和。
仅一个元素时必贡献;一端固定时等价于从两个数中选最大;两端都不固定时等价于从三个数中选最大。

F - A Dangerous Maze

LightOJ - 1027

\[E = \sum (p_i \times t_i) + \sum\big(p_i \times (t_i + E)\big) \]

移项化简即可。

G - Collecting Bugs

POJ - 2096

\(dp[i][j]\) 表示已找到 \(i\) 种类型、\(j\) 个子系统后,还需的期望天数。直接全期望转移。

H - Batting Practice

LightOJ - 1408

\(f_i\) 为已连续命中 \(i\) 次后的期望击球数,\(g_i\) 为已连续未命中 \(i\) 次的期望。

\[f_i = 1 + p\,f_{i+1} + q\,g_1 \]

\[g_i = 1 + q\,g_{i+1} + p\,f_1 \]

通过等比数列求和展开,联立两式解出 \(f_1,g_1\),最终答案 \(ans = p\,f_1 + q\,g_1\)

I - Desiderium

HDU - 5481

将区间分段,计算每一段被至少一个随机区间覆盖的概率,乘上段长求和即为期望。

J - Professor Tian

HDU - 4649

由于运算是位运算,可以拆位处理,记录每位为 0 或 1 的概率,最终组合得到期望。

K - 序列期望

HDU - 6410

直接按最大值计算不便,使用容斥:
用总和减去“所有元素均不超过某值”的情况,得到最大值恰为某值的情形数,进而求期望。

L - 聪聪与可可

洛谷 - P4206

预处理猫的最近步,记忆化搜索模拟老鼠的随机移动,时间在猫第一次移动时更新。

M - Gambling Guide

洛谷 - P4745

每点有两个选择:去票选的地点,或再买一次票(即重新随机选择邻点)。
最优策略一定是从期望步数小的点转移。终点期望为 0,以此为起点跑 Dijkstra。
设当前点 \(i\)\(cnt_i\) 个邻点,其中 \(x\) 个点的期望更优,记它们的期望和为 \(sum_x\),则

\[dp[i] = \frac{sum_x}{cnt_i} + \frac{dp[i]\,(cnt_i - x)}{cnt_i} + 1 \]

化简得 \(\displaystyle dp[i] = \frac{sum_x}{x} + \frac{cnt_i}{x}\)
每次取期望最小的点更新,即可得到所有点的最优期望。

N - 收集邮票

洛谷 - P4550

不知最终花费总额,但知道平均还需走多少步。
花费与步数成线性关系,因此可将“还需步数的期望”作为单步费用。
\(f_i\) 为还需步数期望:

\[f_i = f_{i+1} + \frac{n}{n-i} \]

\(g_i\) 为还需花费期望,递推时将常数 \(1\) 替换为 \(f_i\)

\[g_i = g_{i+1} + f_i \cdot \frac{n}{n-i} \]

当费用是步数的线性函数时,该方法有效;若为非线性(如 \(x^2\)),则不能简单代入。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
double f[10005], g[10005];
signed main(){
    cin >> n;
    for(int i = n - 1; i >= 0; i--)
        f[i] = f[i+1] + 1.0 * n / (n - i);
    for(int i = n - 1; i >= 0; i--)
        g[i] = g[i+1] + f[i] * n / (n - i);
    printf("%.2lf", g[0]);
    return 0;
}
posted @ 2026-07-16 21:16  huhangqi  阅读(21)  评论(0)    收藏  举报