CF1866M Mighty Rock Tower 题解

Problem - 1866M - Codeforces

Mighty Rock Tower - 洛谷

  • 先考虑一个 O(n2) 的 dp

    • 设计状态: dpi 表示搭 i 层的期望

    • 转移:dpi=dpi1×(1Pi)+j=in1dpj×Pj+1ji+1×(1Pj+1) ,显然是有后效性的,但我们展开 dpn ,移一下项,就变成了之和 dpn1 有关的了,就这样一直展开到 dp0 再递推回去,就可以做到 O(n2)

  • 考虑优化,我们的复杂度主要在哪?主要是在后面部分的展开,换言之我们并不好考虑从高层掉到第 i 层的情况,因此我们不妨考虑强制从 i1i 的期望

    • 设计状态: dpi 表示从 i1i 的期望次数

    • 转移:

    • (1)dpi=1+j=1idpj×Pii+j=1i1Pij×(1Pi)×k=ij+1idpk(2)=1+j=1idpj×Pii+k=1ij=ik+1i1Pij×(1Pi)×dpk(3)=1+j=1idpj×Pii+k=1ij=ik+1i1Pij×(1Pi)×dpk(4)=1+j=1idpj×Pii+k=1i(Piik+1Pii)×dpk(5)=1+j=1idpj×Piij+1(6)(1Pi)dpi=1+j=1i1dpj×Piik+1(7)dpi=1+j=1i1dpj×Piik+1iPi

    • 优化转移:发现 Pi 的原因并不好优化,但原题 Pi99 ,因此我们可以直接对每一种 Pi 都做一遍前缀和,最终复杂度 O(nΣ)

posted @   FOX_konata  阅读(54)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示