暑训5-L
题意
有 个格子,起点位于
号格子,终点是
号格子;你有若干硬币,对于非终点的格子,每走一步,有
的概率成功走到下一个格子,否则尝试消耗
个硬币留在原地,若无硬币则回到起点。求对于每个初始硬币数
,你从起点走到终点所需的期望步数。
解:期望dp
如果你对公式感到困惑可以看看转移图:
这里的方向是实际模拟时状态改变的方向,但推期望的时候是反过来推的。
我们设 为剩余
个硬币,在第
个格子时步数的期望。
对于第 层我们有:
暴力消元可以解出 ,然后暴力回代得:
对于其他层有:
又设差分:
对 作差分可得:
计算 :
考虑 对
的总贡献:不妨想象一个二维游走,但是这里的递推是定向的,也就是说
到
的路径数量是确定的。每条路径上的权也是确定的。
第一步一定是 (向右),然后是
个
(向上)和
个向右。
化简一下:
超级拆解.png
我们要 算出所有:
众所周知
利用
把求和指标换成 得
后一项正是 自身截去最后一项,于是
根据加法公式
把它对所有 加权求和可得
即
更新
初值
超级拼装.png
工程已毕,所有量都已能 从上一层更新:
量 | 更新方式 |
---|---|
逐层乘一次 |
|
式 (4) | |
式 (2) | |
式 (3) |