P1654 OSU!

news/2025/10/5 23:13:27/文章来源:https://www.cnblogs.com/mLazy/p/19127157
难度 算法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.mzph.cn/news/928830.shtml

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

相关文章

响应式网站几个断点毕节市城乡建设局网站

文章目录 年费和小额账户管理费减免政策:每家银行均可有一张借记卡享受双免政策减免政策:代发工资、低保、社保、医保、失业保险、养老金、退休金、住房公积金等账户减免政策:二、三类电子账户一类卡、二类卡和三类卡二、三类电子账户不收取年…

做网站网络合同石河子网站制作

问题如下;Java代码中的方法是:Rule foo(){return sequence(foo(), x());}这将引发解析循环,当然应该避免;但是,这是合法的:Rule foo(){return sequence(x(), foo());}现在,代码中的其他地方我可以访问RuleMethod,这是一个扩展MethodNode的类,因此我可以访…

10/5

今日学习了Java,背诵了英语单词,明日继续

10/4

今日学习了Java,背诵了英语单词,明日继续

DynamoDB十年演进:云原生数据库的技术革新

本文深入探讨了Amazon DynamoDB云原生数据库的十年发展历程,从Dynamo研究论文到完全托管服务的演进,涵盖了分布式系统架构设计、弹性扩展机制、毫秒级性能优化等核心技术突破,以及全球表、事务支持等创新功能的发展…

惠州网站建设英语怎么快速搭建网站

当用C语言来实现猜数字游戏时,我们可以设计一个简单的游戏规则:计算机随机生成一个1到100之间的整数,玩家需要通过猜测来猜出这个数字。游戏会根据玩家猜测的数字与目标数字的大小关系给出提示,直到玩家猜中为止。 下面是一个用C…

详细介绍:【python】uv管理器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

企业微网站开发锛网站

现在,人工智能的发展处于跳跃式阶段,我们也对AI在大型数据集的应用进展感到吃惊。更重要的是,那些我们没有跟踪的数十亿张照片或餐厅的评论并没有被遗漏掉:迁移学习技术让收集数据变得更加“容易”。另外,得益于PyTorc…

深圳网络做网站app开发费用大概多少

22/06/2005 12:22 FPOracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。下面例子中使用的表来自Oracle自带的HR用户下的表,如果没…

NotImplementedError: Cannot convert a symbolic Tensor (lstm/strided_slice:0) to a numpy array.

NotImplementedError: Cannot convert a symbolic Tensor (lstm/strided_slice:0) to a numpy array. This error may indicate that youre trying to pass a Tensor to a NumPy call, which is not supportednumpy …

porting perf性能观测工具

1.cd sdk/kernel/linux/linux-6.1.83/tools/perf 2.make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- NO_LIBPYTHON=1 NO_LIBPERL=1 NO_LIBBPF=1 3.在当前路径下生成perf 4.copy到板子/tmp目录下 scp ./per…

Windows常用快捷指令

Windows常用快捷指令 总览shift+数字键:输入数字键上的特殊符号 shift+Ctrl:切换输入法(台式电脑) shift+空格:切换输入法(笔记本电脑) Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+X:剪切 Ctrl+Z:撤销 Ctrl+Y:重做 Ctr…

网站建设价格方案网站程序 wordpress 织梦 discuz

公证服务信息您是否需要高吞吐量的Corda网络? 网络的吞吐量是否稳定? 您是否已经从其他领域挤出了所有可能的表现? 如果您对这些问题的回答是“是”,那么我可能会为您提供一些有用的信息。 我列出了这些问题,以减少您过…

Python 在金融中的应用- Part 1 - 教程

Python 在金融中的应用- Part 1 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

影响网站收录的因数沈阳工程最新动态

参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。 一、驱动加载部分 [cpp] view plaincopy static int __init usb_mouse_init(void) { int retval usb_register(&a…

网站开发常用软件是什么成都市住房和城乡建设厅官方网站

编译安装为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。首先我们介绍如何从源代码部署一台MySQL服务器。1.下载MySQL Community Server源码…

QBXT2025S刷题 Day4

今天的题 \(75pts\ rk50+\) ,最废的一次。 T1 简单 \(\mathcal{DP}\)。 #include <iostream>using std::cin; using std::cout; const int N = 1e3 + 10; #define int long long const int mod = 998244353;int…

实用指南:2025年05月29日Github流行趋势

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

java学习日记9.25

9.25 学习笔记 类型转换由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。大小排序:byte, short,char-int-long-float[^1]-double运算中,不同类型的数据先转化为同一类型,然后进行运算。强制转换…