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

P1654 OSU!

难度 算法s 日期 题目链接
提高+/省选− 数学期望、递推 2025-07-21~22 https://luogu.com.cn/problem/P1654

似乎是一道蛮经典的期望递推题。

洛谷上的题解看不懂,老师讲的也很简略。只有自己推起来感觉很复杂。。。心累。

题意简述

一共有 \(n\) 次操作,第 \(k\) 次操作(\(1\le k\le n\))成功的概率是 \(p_i\)。成功记作 \(1\),失败记作 \(0\),那么所有操作的结构依次连起来就可以得到一个 \(0/1\) 串。在这个串中,每个极大的、连续的 \(X\)\(1\) 会对分数产生 \(X^3\) 的贡献,每个全为 \(1\) 的子段的贡献线性累加。

求:贡献总和的期望 \(E\)

范围:\(1\le n\le10^5\)

思路

考虑线性递推。

  • 我们把以位置 \(k\) 结尾的一串 \(1\)长度记为 \(X_k\)

  • 让我们先试着求长度一次方的期望。我们把 \(X_k\) 的期望记为 \(E(X_k)\)。在这个位置 \(k\),我们向串尾追加第 \(k+1\) 个操作结果,有两种情况:

    • \(p_{k+1}\) 的概率第 \(k+1\) 次操作成功。成功后 \(X_{k+1}\) 的期望为 \(E(X_k)+1\)。(也就是 \(1\) 串的长度 \(+1\)

    • 另外 \(1-p_{k+1}\) 的概率第 \(k+1\) 次操作失败。失败后串尾就没有 \(1\) 了,所以 \(E(X_k)=0\)

    所以:

    \[E(X_{k+1})=p_{k+1}E(X_k+1)+(1-p_{k+1})\times0. \]

    由期望的线性性,

    \[E(X_k+1)=E(X_k)+E(1)=E(X_k)+1, \]

    这里常数 \(C\) 的期望 \(E(C)\) 当然就是 \(C\) 了,不然还能有别的取值吗。进一步化简,得:

    \[E(X_{k+1})=p_{k+1}[E(X_k)+1].(1) \]


  • 类似地,记 \(X_k^2\) 的期望为 \(E(X_k^2)\)。我们尝试求一下长度二次方的期望的递推式:

    \[E(X_{k+1}^2)=p_{k+1}E[(X_k+1)^2]+(1-p_{k+1})\times0 \]

    请注意: 此处是 \(E[(X_k+1)^2]\) 而不是 \([E(X_k)+1]^2\),写成后面那个就推不出来了。(而且也是错的)。

    化简 \(E[(X_k+1)^2]\),依旧是利用期望的线性性:

    \[E[(X_k+1)^2]=E(X_k^2+2X_k+1)=E(X_k^2)+2E(X_k)+1. \]

    化简整个式子:

    \[E(X_{k+1}^2)=p_{k+1}[E(X_k^2)+2E(X_k)+1].(2) \]


  • 类似地,记 \(X_k^3\) 的期望为 \(E(X_k^3)\)。那么长度三次方的期望的递推式:

    \[E(X_{k+1}^3)=p_{k+1}E[(X_k+1)^3]+(1-p_{k+1})\times0, \]

    化简(过程略):

    \[E(X_{k+1}^3)=p_{k+1}[E(X_k^3)+3E(X_k^2)+3E(X_k)+1]. \]


期望推过瘾了,那我们怎么求答案呢?我们假设 \([1,k]\) 上的分数的期望为 \(E_k\),那么\(E_n\) 就是答案了,接下来考虑如何递推:

  • \(p_{k+1}\) 的概率第 \(k+1\) 次操作成功,那么 \(1\) 串继续累加,\(E_{k+1}=p_{k+1}[E_k+3E(X_k^2)+3E(X_k)+1]\)。这一部分和长度三次方的期望是一样的(只不过我们把 \(E(X_k^3)\) 换成了 \(E_k\))。

  • 另外 \(1-p_{k+1}\) 的概率第 \(k+1\) 次操作失败,那么期望不变, \(E_{k+1}=E_{k}\)注意,这里就和上面长度三次方的递推式不同了。因为上面我们规定 \(X_k\) 是以 \(k\) 结尾的 \(1\) 串的长度,如果操作失败,长度和期望都清零了。但是这里我们是要统计累积的期望分数,所以期望不清零。

加起来就得到:

\[E_{k+1}=E_{k}+p_{k+1}[3E(X_{k}^2)+3E(X_{k})+1].(3) \]

结合 \((1)(2)(3)\),就容易设计递推了。

补充

请注意: \(E(X_k^3)\not=[E(X_k)]^3\),即三次方的期望 \(\not=\) 期望的三次方。这也解释了我们为什么要大费周章地推式子,而不是直接推出 \(E(X_n)\) 然后取三次方。

为了避免这个混淆,上面我不辞辛苦地把一个个期望都严格写成 \(E(X_k)\) 而不是 \(E(k)\)。TwT

http://www.zskr.cn/news/16311.html

相关文章:

  • 10/4
  • DynamoDB十年演进:云原生数据库的技术革新
  • NotImplementedError: Cannot convert a symbolic Tensor (lstm/strided_slice:0) to a numpy array.
  • HTML基础学习 - 教程
  • 7_如何构建知识图谱
  • WPF ContentControl Content Binding
  • 盛世华诞 举国同庆|热烈庆祝 LEWISAK 英勇重创消火栓 1 周年!
  • 完整教程:<el-table>构建树形结构
  • CF2115 VP 记录
  • 深入解析:低秩矩阵、奇异值矩阵和正交矩阵
  • POLIR-Society-Philosophy- Hegels 形而上学System Philosophy Dialectics 系统化哲学辩证法: 自由意志+封闭的绝对精神
  • luogu P8816 [CSP-J 2022] 上升点列 题解
  • 集成测试 maestro-我的第一个flow以及第一次云端测试 - 详解
  • 2025 年生物除臭设备厂家最新推荐排行榜:覆盖污水处理厂 / 垃圾中转站等多场景,助力企业精准挑选优质设备
  • 从理念到沙盘:用悟空博弈模拟器点亮人机共治的曙光
  • Perplexity发布搜索API,驱动下一代AI应用开发
  • 20251005 总结
  • OKR1
  • 钉钉红包性能优化之路 - 实践
  • 2025 --【J+S 二十连测】-- 第二套 总结
  • 如何将 WSL 的 Ubuntu-24.04 迁移到其他电脑 - 详解
  • 题解:Luogu P11976 [KTSC 2021] 通信网络 / communication
  • 弦振动方程
  • 理论构建尝试整理
  • 基于springboot的家政服务预约系统 - 指南
  • 05-springAOP的实现
  • 2048小游戏C++板来啦! - 指南
  • 详细介绍:vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)
  • st表 + 变形的djs (好题
  • 李臻20242817_安全文件传输系统项目报告_第14周 - 指南