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

CF1866M Mighty Rock Tower

CF题面 luogu题面

期望题。

题目大意:一个人在搭积木,每次堆叠可能成功或失败,失败可能导致其下面连续的若干块掉落。给定搭每一块时失败的概率,求堆叠完成的期望次数。
具体的,假设当前正在堆叠第 i 块,设掉落概率为 p,则有 p 概率第 i 块失败,有 p 2 p^2 p2 概率第 i 块和第 i-1 块均掉落,有 p 3 p^3 p3 概率第 i, i-1, i-2 块均掉落,以此类推。

f i f_i fi 表示堆叠 i i i 块的期望次数不好转移,注意到堆叠连续性,考虑设 f i f_i fi 表示由第 i − 1 i-1 i1 块到堆好第 i i i 块的期望次数。

列出状态转移方程:
f i = ( 1 − p i ) × 1 + p i ( ( 1 − p i ) ( f i + 1 ) + p i ( ( 1 − p i ) ( f i + f i − 1 + 1 ) + ⋯ + p i ( f i + f i − 1 + ⋯ + f 1 + 1 ) … ) ) f_i=(1-p_i)\times 1+p_i((1-p_i)(f_i+1)+p_i((1-p_i)(f_i+f_{i-1}+1)+\dots+p_i(f_i+f_{i-1}+\dots+f_1+1)\dots)) fi=(1pi)×1+pi((1pi)(fi+1)+pi((1pi)(fi+fi1+1)++pi(fi+fi1++f1+1)))

变形得 f i ( 1 − p i ) = 1 + p i 2 × f i − 1 − p i 3 × f i − 1 + p i 3 × ( f i − 1 + f i − 2 ) + ⋯ + p i i − 1 ( f i − 1 + f i − 2 + ⋯ + f 2 ) + p i i ( f i − 1 + f i − 2 + ⋯ + f 2 + f 1 ) f_i(1-p_i)=1+p_i^2\times f_{i-1}-p_i^3\times f_{i-1}+p_i^3\times (f_{i-1}+f_{i-2})+\dots+p_i^{i-1}(f_{i-1}+f_{i-2}+\dots+f_2)+p_i^i(f_{i-1}+f_{i-2}+\dots+f_2+f_1) fi(1pi)=1+pi2×fi1pi3×fi1+pi3×(fi1+fi2)++pii1(fi1+fi2++f2)+pii(fi1+fi2++f2+f1)

化简 得 f i = 1 + ∑ j = 2 i p i j × f i − j + 1 1 − p i f_i=\large\frac{1+\sum^{i}_{j=2}p_i^j\times f_{i-j+1}}{1-p_i} fi=1pi1+j=2ipij×fij+1

这时复杂度是 O ( N 2 ) O(N^2) O(N2),考虑如何优化。
我们当然想将 f i − j + 1 f_{i-j+1} fij+1 转成前缀和,麻烦在于 p i j p_i^j pij,这时我的思路卡死。
考虑如何处理 p p p,发现 p ∈ [ 0 , 100 ) p\in[0,100) p[0,100),于是可以考虑对于所有 p p p 都做前缀和维护。

这里再细讲下如何前缀和维护。对于 ∑ j = 2 i P j × f i − j + 1 \sum^{i}_{j=2}P^j\times f_{i-j+1} j=2iPj×fij+1,观察 i + 1 i+1 i+1 的和,即 ∑ j = 2 i + 1 P j × f i − j + 2 \sum^{i+1}_{j=2}P^j\times f_{i-j+2} j=2i+1Pj×fij+2,发现就是 前者 × P + P 2 × f i \times P+P^2\times f_i ×P+P2×fi。如果把求和的式子改写成 ∑ j = 1 i − 1 P i i − j + 1 × f j \sum^{i-1}_{j=1}P_i^{i-j+1}\times f_j j=1i1Piij+1×fj 会好看些,这里不写了。当然,学会观察式子并将之改得更加容易理解也是一种技能。

然后这题就做完了,时间复杂度 O ( 100 N log ⁡ M ) O(100N\log M) O(100NlogM)
这题时限 2s,注意优化常数。
优化后的复杂度是 O ( 100 N ) O(100N) O(100N),可以通过此题。


这题的关键点在于发现 p ∈ [ 0 , 100 ) p\in[0,100) p[0,100) ,可以将前缀和关于 p p p 全部维护出来。

C o d e Code Code

http://www.lryc.cn/news/221418.html

相关文章:

  • 【漏洞复现】Apache_Tomcat7+ 弱口令 后台getshell漏洞
  • 2023-11-7 OpenAI 45 分钟发布会:演示关于 GPT Store 构建 GPT、零代码创建 AI Agent
  • 嵌入式系统中的FPGA
  • String,StringBulider,StringBuffer的简单说明
  • Python编程题集(第一部分基本语法基础)
  • 手动关闭PS中的TopazStudio2的登录窗口
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • 接口测试总结
  • 计算机基础知识44
  • 【StringBuilder和StringBuffer】
  • 用java代码实现security
  • 【Java 进阶篇】Java Session 原理及快速入门
  • MoveFunsDAO 星航计划|从Move入门Web3与深入实践「公益课堂」
  • RabbitMQ常用命令(一)
  • 在教育领域,AI垂直大模型应用场景总结!
  • 基于级联广义积分器(CGI)的谐波信号提取MATLAB仿真
  • Linux--线程-条件控制实现线程的同步
  • flutter开发报错The instance member ‘widget‘ can‘t be accessed in an initializer
  • spring项目详细结构目录
  • Cygwin 和MinGW 的区别与联系
  • WebSocket Day03 : SpringMVC整合WebSocket
  • Electron + VUE3 桌面应用,主进程和渲染进程通信
  • 使用腾讯云轻量服务器安装AList
  • 边缘计算助力低速无人驾驶驶入多场景落地快车道
  • 谷歌推出基于AI的产品图像生成工具;[微软免费课程:12堂课入门生成式AI
  • python学习10
  • 【JAVA学习笔记】59 - JUnit框架使用、本章作业
  • 3D 线激光相机的激光条纹中心提取方法
  • 云尘靶场-Tr0ll-vulhub
  • Cuda cmake支持C++17