前言
教练讲之前我是完全不会的啊,讲完了感觉大脑旋转。
主要写题单里的题的题解。
预备知识
离散型随机变量的期望
设离散型随机变量 \(X\) 的概率分布为 \(p_i=P(X=x_i)\),则 \(X\) 的期望 \(E(X)\) 定义为
连续型随机变量的期望
设离散型随机变量 \(X\) 的密度函数为 \(f(x)\),则 \(X\) 的期望 \(E(X)\) 定义为
题单练习
Luogu P6154 游走
题意
给定一个 \(n\) 个点 \(m\) 条边的 DAG,问从所有路径中(路径可以为一个点),等概率随机选择其中一条的期望长度,答案对 \(998244353\) 取模。
对于所有数据,\(1\leq n\leq 10^5\),\(1\leq m\leq 7\times 10^5\)。
题解
它都不是期望 DP 题。期望长度即路径长度总和除以路径总条数,DAG 上 DP 统计即可。时间复杂度 \(O(n+m)\)。
Luogu P4316 绿豆蛙的归宿
题意
给定一个 \(n\) 个点 \(m\) 条边的带权 DAG,起点为 \(1\) 号点,终点为 \(n\) 号点,保证从起点出发能到达所有点,所有点也都能到达终点。现在绿豆蛙从起点走到终点,每次从所有能到达的点中等概率选择一个走,问走的路径的期望长度。
对于所有数据,\(1\leq n\leq 10^5\),\(1\leq m\leq 2n\)。
题解
裸题。令 \(f_i\) 表示 \(i\rightarrow n\) 的期望路径长度,在反图上 DP 即可。时间复杂度 \(O(n+m)\)。
Luogu P1850 [NOIP 2016 提高组] 换教室
题意
一个人需在 \(n\) 个时间段选课,每时间段有原教室 \(c_i\) 和可选教室 \(d_i\)。他可以最多申请 \(m\) 次更换教室,第 \(i\) 个时间段申请成功概率为 \(p_i\)。所有申请需一次性提交,每个时间段只能申请一次。所有教室构成一个 \(v\) 个点 \(e\) 条边的无向带权图,课间移动消耗的体力为两教室间的最短路径,求总体力消耗的期望最小值。
对于所有数据,\(1\leq n\leq 2\times 10^3\),\(0\leq m\leq 2\times 10^3\),\(1\leq v\leq 300\),\(0\leq e\leq 9\times 10^4\)。
题解
经典题。先 Floyd 预处理多源最短路,然后容易想到令 \(f_{i,j,0/1}\) 表示考虑前 \(i\) 个时间段,共使用 \(j\) 次申请次数,第 \(i\) 个时间段是否申请换教室的期望最小值。分讨第 \(i-1\) 个和第 \(i\) 个时间段分别是否申请成功容易得到转移方程:
时间复杂度 \(O(v^3+nm)\)。
Luogu P3412 仓鼠找sugar II
题意
给定一棵 \(n\) 个点的树,小仓鼠想从任意的起点 \(s\) 走到任意的终点 \(t\),每次会从所有相邻的节点中等概率随机选择一个走,问走的路径长度的期望,答案对 \(998244353\) 取模。
对于所有数据,\(1\leq n\leq 10^5\)。
题解
妙妙题。枚举终点 \(t\) 作为树的根节点,然后你发现它可以往回走,导致你如果设计 \(f_u=E(dis(u,t))\) 会有后效性,\(n\) 的范围显然不允许我们做高斯消元。
考虑一些高妙的东西,注意到某个点 \(u\rightarrow t\) 随机走出来的路径必然会包含 \(path(u,t)\) 上的边,所以我们有
很自然地想到设计 \(f_u=E(dis(u,fa_u))(u\neq t)\),但这个好像还是列不出普通的转移方程啊!但是我们仔细考虑 \(u\) 如何能走到 \(fa_u\)。首先它有 \(\frac{1}{deg_u}\) 的概率可以直接走到 \(fa_u\),其次对于每个子节点 \(v\in son_u\),它还有 \(\frac{1}{deg_u}\) 的概率走到 \(v\),然后再沿 \(v\rightarrow u\rightarrow fa_u\) 走到 \(fa_u\)。于是我们可以列出一个神秘的方程:
解方程可以得到
于是我们可以树形 DP 求出所有 \(f_u\) 了!然后对于一条边 \((u,fa_u)\),显然它是 \(sz_u\) 个节点向上走的必经边。我们令 \(f_t=0\),则 \(ans_t=\sum_{u=1}^t sz_uf_u\)。
枚举 \(t\),把所有 \(ans_t\) 加起来再除以 \(n^2\) 就是答案,于是我们有了 \(O(n^2)\) 的做法。转移方程是个和式,某个点的贡献容易增删,显然可以换根 DP 优化到 \(O(n)\)。实现时注意一下换根前后根节点的贡献即可。
其实我们也有不那么高妙的角度。我们回到令 \(f_u=E(dis(u,t))\),转移方程就是 \(f_u=\frac{1}{deg_u}\sum_{(u,v)\in E}f_v+1\)。从叶子节点开始考虑,那么 \(f_u\) 的值只和 \(f_{fa_u}\) 有关,进一步扩展到某个叶子结点的父亲 \(u'\),它的每个儿子都可以表示成有关 \(f_{u'}\) 的一次函数,代入得到 \(f_{u'}\) 的值又只与 \(f_{fa_{u'}}\) 有关……这样向上递推,容易发现 \(f_u\) 最终就是一个关于 \(f_{fa_{u}}\) 的一次函数,可以记录系数树形 DP 求解。再去记录子树的 \(f_u\) 和容易拓展到换根 DP 的形式。时间复杂度还是 \(O(n)\) 的。显然两种角度本质相同。