算法学习笔记:期望/概率 DP

news/2025/2/22 12:55:40/文章来源:https://www.cnblogs.com/P2441M/p/18730426

前言

教练讲之前我是完全不会的啊,讲完了感觉大脑旋转。

主要写题单里的题的题解。

预备知识

离散型随机变量的期望

设离散型随机变量 \(X\) 的概率分布为 \(p_i=P(X=x_i)\),则 \(X\)期望 \(E(X)\) 定义为

\[\sum p_ix_i \]

连续型随机变量的期望

设离散型随机变量 \(X\) 的密度函数为 \(f(x)\),则 \(X\)期望 \(E(X)\) 定义为

\[\int xf(x)\text{d}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\) 个时间段分别是否申请成功容易得到转移方程:

\[\begin{align*} & f_{i,j,1} = \min \begin{cases} f_{i-1,j-1,0} + dis(c_{i-1}, d_i) \times p_i + dis(c_{i-1}, c_i) \times (1 - p_i), \\ f_{i-1,j-1,1} + dis(d_{i-1}, d_i) \times p_{i-1} p_i + dis(d_{i-1}, c_i) \times p_{i-1} (1 - p_i) \\ \quad + dis(c_{i-1}, d_i) \times (1 - p_{i-1}) p_i + dis(c_{i-1}, c_i) \times (1 - p_{i-1}) (1 - p_i) \end{cases} \\& f_{i,j,0} = \min \begin{cases} f_{i-1,j,0} + dis(c_{i-1}, c_i), \\ f_{i-1,j,1} + dis(d_{i-1}, c_i) \times p_{i-1} + dis(c_{i-1}, c_i) \times (1 - p_{i-1}) \end{cases} \end{align*} \]

时间复杂度 \(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)\) 上的边,所以我们有

\[E(dis(u,t))=\sum_{\substack{x\in path(u,t)\\x\neq t}}E(dis(x,fa_x)) \]

很自然地想到设计 \(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\)。于是我们可以列出一个神秘的方程:

\[f_u=\frac{1}{deg_u}+\frac{1}{deg_u}\sum_{v\in son_u}f_v+f_u+1 \]

解方程可以得到

\[f_u=deg_u+\sum_{v\in son_u}f_v \]

于是我们可以树形 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)\) 的。显然两种角度本质相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有哪些好用的AI工具?(你想要的AI工具都在这)

1. 常见应用场景 1.1. 国内通用大模型模型名称 简介 官网地址DeepSeek 深度求索公司研发的高性能开源模型,以低成本、高推理能力著称,支持数学、代码等复杂任务。 https://chat.deepseek.com/豆包 字节跳动开发的智能语言模型,基于深度学习技术,支持多种自然语言处理任务。…

Kubernetes 集群上部署 Open WebUI

在前一篇博文中记录了 k8s 集群上部署 ollama + deepseek-r1:7b,这篇博文记录一下 Open WebUI 的部署。还是用 helm 部署,添加 open-webui 的 helm repo,准备 helm 清单文件,通过 helm 命令在 ai 命名空间下进行部署在前一篇博文中记录了 k8s 集群上部署 ollama + deepseek…

2025.2.22

Hehe_0 模拟赛内容随笔 [NOIP2015]金币1 2 3 4 。。。1 2-3 4-6 7-10 。。。观察数据范围1e4,暴力就行,然后可以去思考优化版本 由于已经把规律给出来了,所以可以提前离线处理出来,如果数据过大,可以预处理每一次金币变化的天数,然后根据提问二分找区间然后求和。这种数…

充电桩功能扩展,解决桩企内存不足的问题

OCPP(开放充电点协议)1.6是电动汽车充电基础设施中广泛使用的通信标准。尽管OCPP 1.6为充电桩与中央管理系统(CSMS)之间的交互提供了基本功能,但由于OCPP主板的内存资源有限,其能够实现的功能也受到了一定的限制。为了解决这一问题,OCPP协议网关作为OCPP主板的扩展,能够…

Spring复习-AOP

AOP的概念 AOP,Aspect Oriented Programming,面向切面编程,是对面向对象编程OOP的升华。OOP是纵向对一个事物的抽象,一个对象包括静态的属性信息,包括动态的方法信息等。而AOP是横向的对不同事物的抽象,属性与属性、方法与方法、对象与对象都可以组成一个切面,而用这种思…

Univer sheet加载上下文菜单卡死崩溃问题定位

背景: 我的应用技术栈是Vue3,Univer是基于react的,所以定位问题花了很久,在此记录一下查问题的方式。 使用Chrome DevTools的Performance进行录制,复现卡死操作后,在Performance Monitr中可以看到CPU Usage持续100%,且页面重计算次数持续飙高。由于页面卡死,Performanc…

乐园杂音

沟槽的杉井光为什么还不填坑! 其实兔子最早看的一批轻小说就有乐杂,但是那时候没有写读后感的习惯,现在重刷一遍乐杂,就顺便写一下读后感。兔子每次给别人看这张图都会让他们猜女主是谁。 其实吧,虽然普遍认为《离别的钢琴奏鸣曲》比《乐园杂音》写的要好,但是兔子更喜欢…

一张图搞懂支付账务

会计与程序语言虽不同,却能从相同维度描绘业务场景。如何利用这一原理,拆解支付账务的科目设置、对账与核算流程,建立起清晰的账务处理逻辑?让我们一起一探究竟。学习账务的时候你是否经常有这些疑问“待结算和待清算是什么?为什么要有已清算?待结算和待清算是一回事吗?…

Diffusion-DPO:一种基于直接偏好优化的扩散模型对齐新方法

本文介绍了一种名为 Diffusion-DPO 的方法,该方法改编自最近提出的直接偏好优化 (DPO)。DPO 作为 RLHF 的简化替代方案,通过分类目标直接优化策略,以更好地满足人类偏好。诸如 GPT-4 和 Llama 2 等高性能大型语言模型 (LLM) 的训练通常分为两个阶段:https://avoid.overfit.…

联网搜索接口!大模型API和私有化部署联网搜索接口:基于互联网搜索服务的 API 接口技术分享与应用实践

联网搜索接口!大模型API和私有化部署联网搜索接口:基于互联网搜索服务的 API 接口技术分享与应用实践关键词:API 接口、互联网搜索、大模型、私有化部署、数据采集、技术分享、微信小程序、数字续坚、竞品对比一、引言在大模型 API 开发与私有化部署日益普及的背景下,如何在…

687. 最长同值路径(中)

目录题目题解:后序遍历 题目给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。题解:后序遍历通过深度优先搜索后序遍历二叉树,计算并更新每个节点…

week 01 C语言基础

Week01 一.语言基础认知 1.1 C语言是什么? 通过一系列的语法和语义规则来描述计算机程序的行为和逻辑,可以将程序转化为二进制指令,并由CPU执行。 语言=语法+逻辑 1.2 C语言的特点简洁C语言的语法简单,简单明了,使得程序易于阅读和理解。高效C语言的执行效率高,可以用于开…