【题解】 洛谷 P6835 [Cnoi2020]线形生物

一道期望dp

dpi 表示从 i 走到 n+1 的期望步数。

我们可以设 ki 表示 i 的出边条数,ei,j 表示 i 的第 j 条返祖边的终点,那么不难得到:

dpi=1+1ki×(dpi+1+jdpei,j)

但是发现这玩意是没法转移的,因为 dpi 的值依赖于 dpi+1 的值,于是考虑把 dpi+1 移到一边:

dpi+1=ki×dpikijdpei,j

然后由于期望的线性性,xy 的期望步数 Ex,y 一定可以表示为 i=xy1Ei,i+1,设 ai=Ei,i+1,所以实质上 dp 数组是 a 的后缀合,而思考这个dp之所以不能转移是因为我们只能从 i=1 开始dp,但更新却应当是向 i=1 依次更新才对,所以这时只需将后缀和转化为前缀和即可。

那么设 ba 的前缀数组,则 dpi=dp1bi+1,此时的 i[1,n],但是那个 +1 我很不喜欢,于是我设 fi=bi+1,所以 dpi=dp1fii[2,n+1]

dpi+1=ki×(dp1fi)kij(dp1fei,j)

整理一下:

dpi+1=dp1ki×fiki+jfei,j

dpi+1=dp1fi+1

所以:

fi+1=ki×(fi+1)jfei,j

dpn+1=dp1fn+1=0,所以最终答案即为 fn+1

posted @   wapmhac  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示