链接:https://cn.vjudge.net/problem/POJ-3744
一个人在一条线上走,线上有n个点有地雷,这个人每次有一定概率$p$走一步,也有$1-p$的概率跳两步。问这个人不踩地雷的概率是多少。
我们根据题意能推出递推式:$f(i)$表示走到$i$处的概率为多少。$f(1)=1$,$f(i)=p×f(i-1)+(1-p)×f(i-2)$。
由于线很长,但是地雷很少。我们观察这个递推式是线性的,于是可以用矩阵快速幂优化,构造矩阵:
$$
\begin{pmatrix}f(n)\f(n-1)\end{pmatrix}=\begin{pmatrix}p&1-p\1&0\end{pmatrix}\begin{pmatrix}f(n-1)\f(n-2)\end{pmatrix}
$$
对于每一个雷的位置进行分段,计算到那个地方不踩中的概率,递推所有段走到雷处不中的概率,用乘法原理就能求出来结果了。
1 | typedef struct Matrix { |