考虑到平面中所有不同合法状态数不超过 4nm(当前点横纵坐标 / 当前偏移量),因此可以直接暴力找出从当前点开始机器人会移动的路径,该路径的长度不超过 4nm。设该路径 L 中包含的坐标分别为 (x1,y1),(x2,y2),…,(xk,yk)。那么对于每一个坐标 (xi,yi):
- 若 (xi,yi) 和目标坐标在同一行 / 同一列上,那么有 100p 的概率完成,100100−p 的概率完不成。
- 若 (xi,yi) 和目标坐标不在同一行 / 同一列上,那么有 0 的概率完成,1 的概率完不成。
考虑设 pi 表示 (xi,yi) 完不成目标的概率,那么可以设答案是 x,然后列出方程:
x=p1(1+p2(1+p3(…(1+pk(1+x)))))
但是这个方程中存在环,无法直接转移。因此套路的拆括号,得到:
x=p1+p1p2+p1p2p3+…+p1p2p3…pk+p1p2p3…pkx
移项得:
(1−p1p2p3…pk)x=p1+p1p2+p1p2p3+…+p1p2p3…pk
把左边这个东西除到右边,得到:
x=1−p1p2p3…pkp1+p1p2+p1p2p3+…+p1p2p3…pk
即:
x=1−i=1∏kpii=1∑nj=1∏ipi
下面这个东西可以直接算,上面部分直接算是 O(n2) 的,因此考虑设 fi=j=1∏ipj,那么上面部分变为:
i=1∑nfi
此时上下部分都可以 O(n) 计算答案,因此做完了。
代码。
喜欢的话,留下你的评论吧~