P8774 [蓝桥杯 2022 省 A] 爬树的甲壳虫

原题

首先第一眼显然是dp

这里提供两种做法


方法1:

dpi表示从0i的期望次数,容易得到:

(1)dpi=j=1+(Pij1×(1Pi)×(dpi1+1)×j)(2)=(1Pi)×(dpi1+1)×j=1+(Pij1×j)(3)=(dpi1+1)×j=0+Pij(4)=dpi1+11Pi(5)=dpi1+11xiyi(6)=yi×(dpi1+1)yixi

最后只需要写一个快速幂来计算inv(yixi)即可,最终复杂度O(nlogn),复杂度瓶颈在于快速幂

ps: 这里有一个结论:失败后没有回退的这种期望在该路径上的大小为1P,其中P为成功的概率


方法2:

我们发现正着计算j+,是不太好处理的。正难则反,我们考虑倒着dp

不妨设dpi表示从in的期望步数

容易得到:

dpi=(1Pi)×dpi+1+Pi×dp0+1

但我们发现这个递推式显然存在一个问题:我们无法计算出dp0的值

因此我们考虑用解方程的方法得到dp0的值,方法如下:

(7)dp0=(1P1)×dp1+P1×dp0+1(8)=(1P1)×((1P2)×dp2+P2×dp0+1)+P1×dp0+1(9)=(1P1)×(1P2)×dp2+(1P1)×P2×dp0+(1P1)+P1×dp0+1(10)=(1P1)×(1P2)×dp2+dp0×((1P1)×P2+P1)+(1P1)+1(11)= ...(12)=dpn×i=1n(1Pi)+dp0×i=1n(Pi×j=1i1(1Pj))+i=1nj=1i1(1Pj)

其中容易发现dpn=0,且我们不妨设

(13)A=i=1n(Pi×j=1i1(1Pj))(14)B=i=1nj=1i1(1Pj)

我们容易求得A,B的值,我们把他们看成常数,带入原式后容易得到:

(15)dp0=dp0×A+B(16)=B1A

即为答案,最终复杂度O(nlogn),瓶颈仍在快速幂

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