当前位置: 首页 > news >正文

概率-dp

\(\text{hdu-4035}\)

在一棵树上随机游走,从根节点 \(1\) 出发,每次有 \(k_u\) 的几率回到根节点,\(e_u\) 的几率到达出口,否则随机选择一个与它相连的节点并走过去,求期望多少步能走到出口。

\(1 \le n \le 10^4\)


暴力推式子题。

\(t_u = 1 - k_u - e_u\),记 \(f_u\) 表示从 \(u\) 出发走到出口的期望步数,\(p\)\(u\) 的父亲,\(v\)\(u\) 的儿子,\(d_u\)\(u\) 的度数,则有:

\[\begin{align} f_u &= k_u f_1 + t_u \sum_{v \in son(u)} \frac{f_v + 1}{d_u} + t_u \frac{f_p + 1}{d_u} \\ &= k_u f_1 + \frac{t_u}{d_u} \left(f_p + 1 + \sum_{v \in son(u)} (f_v + 1) \right) \\ &= k_u f_1 + \frac{t_u}{d_u} f_p + \frac{t_u}{d_u} \sum_{v \in son(u)} f_v + t_u \end{align} \]

这个式子没法直接算,考虑令 \(f_u = a_u f_1 + b_u f_p + c_u\),目的是把 \(f_v\) 消掉让这个式子可以转移。

\(u\) 为叶子节点,显然有 \(d_u = 1, son(u) = \varnothing\),因此 \(a_u = k_u, b_u = c_u = t_u\)

对于非叶子节点 \(u\),考虑拆掉 \(\sum\limits_{v \in son(u)} f_v = f_1 \sum a_v + f_u \sum b_v + \sum c_v\),有:

\[\begin{align} f_u &= k_u f_1 + \frac{f_u}{d_u} f_p + \frac{t_u}{d_u} \sum_{v \in son(u)} f_v + t_u \\ f_u &= k_u f_1 + \frac{f_u}{d_u} f_p + \frac{t_u}{d_u} \left(f_1 \sum_{v \in son(u)} a_v + f_u \sum_{v \in son(u)} b_v + \sum_{v \in son(u)} c_v \right) + t_u \\ f_u &= \left(k_u + \frac{t_u}{d_u} \sum_{v \in son(u)} a_v \right) \cdot f_1 + \frac{t_u}{d_u} \cdot f_p + \left(\frac{t_u}{d_u} \sum_{v \in son(u)} b_v \right) \cdot f_u + \left(t_u + \frac{t_u}{d_u} \sum_{v \in son(u)} c_v \right) \\ \left(1 - \frac{t_u}{d_u} \sum_{v \in son(u)} b_v \right) \cdot f_u &= \left(k_u + \frac{t_u}{d_u} \sum_{v \in son(u)} a_v \right) \cdot f_1 + \frac{t_u}{d_u} \cdot f_p + \left(t_u + \frac{t_u}{d_u} \sum_{v \in son(u)} c_v \right) \\ f_u &= \frac{k_u + \frac{t_u}{d_u} \sum a_v}{1 - \frac{t_u}{d_u} \sum b_v} \cdot f_1 + \frac{t_u d_u^{-1}}{1 - \frac{t_u}{d_u} \sum b_v} \cdot f_p + \frac{t_u + \frac{t_u}{d_u} \sum c_v}{1 - \frac{t_u}{d_u} \sum b_v} \end{align} \]

那么就有了:

\[\begin{align} a_u &= \frac{k_u + \frac{t_u}{d_u} \sum a_v}{1 - \frac{t_u}{d_u} \sum b_v} \\ b_u &= \frac{t_u d_u^{-1}}{1 - \frac{t_u}{d_u} \sum b_v} \\ c_u &= \frac{t_u + \frac{t_u}{d_u} \sum c_v}{1 - \frac{t_u}{d_u} \sum b_v} \end{align} \]

然后就发现可以树形 dp 了,而且完全不需要计算 \(f_u\),因为答案为 \(f_1 = a_1 f_1 + c_1\),即 \(f_1 = \frac{c_1}{1 - a_1}\)

无解情况有三种:\(d_u = 0\)\(1 - \frac{t_u}{d_u} \sum b_v = 0\)\(a_1 = 1\)

http://www.jsqmd.com/news/791967/

相关文章:

  • AXI4-Lite协议实战:从接口信号到SoC集成
  • S32K144 Lin组件实战:告别官方LinStack,手把手教你用底层驱动搞定超声波雷达
  • LinkSwift:如何让网盘下载从龟速到光速?这款工具给出了答案
  • 观察不同时段调用Taotoken多模型API的延迟波动情况
  • 如何入门代码调试
  • 终极指南:3分钟快速找回Navicat数据库连接密码的免费工具
  • 终极指南:3步解锁碧蓝航线全皮肤功能的Perseus补丁配置
  • 我还是要坚持住
  • “社恐”技术大牛周志明的写作哲学:如何像他一样,用开源文档和博客打造个人技术品牌
  • 别再只配防火墙了!华为USG+交换机联动配置实战:让内网用户顺利上网的完整闭环
  • 捷报频传!奋飞咨询刘老师辅导山东某化工企业荣获EcoVadis铜牌! - 奋飞咨询ecovadis
  • 从理论到实践:利用MATLAB UDP实现跨进程实时数据交换
  • 编程应届生面试,HR最常问的20个问题,高分答案都在这里
  • 第四部分-Docker网络与存储——20. 数据持久化
  • 对比直接使用厂商API,通过Taotoken调用大模型的延迟体感差异
  • Umi-OCR终极指南:免费开源离线文字识别工具全解析
  • 跨平台流媒体下载技术解析:如何用现代架构解决DRM内容获取难题
  • Vivado里用OSERDESE2+OBUFDS实现LVDS输出,一个完整可复用的Verilog模块(含XDC约束)
  • 如何快速提取Unity游戏素材:AssetStudio完整使用指南
  • 面试官与谢飞机的三轮灵魂拷问:从Spring Boot启动到分布式事务
  • 第四部分-Docker网络与存储——21. 高级存储
  • 3分钟搞定Jable视频下载:终极免费解决方案完整指南
  • 品牌打造的低成本高回报之路
  • Unity UGUI点击事件避坑指南:为什么你的Image点了没反应?
  • 为什么92%的企业LLMOps平台在Q3失效?SITS 2026披露4个被忽略的合规性断点与2小时热修复路径
  • Windows和Office终极激活指南:告别烦恼的智能解决方案
  • 2025届学术党必备的五大AI辅助论文平台推荐
  • ECharts地图可视化踩坑实录:从GeoJSON数据获取到本地开发跨域问题的全链路解决
  • 09-扩展知识——08. timedelta 类
  • 赔偿出炉了,N+3/N+4!