链接: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)。
由于线很长,但是地雷很少。我们观察这个递推式是线性的,于是可以用矩阵快速幂优化,构造矩阵:
(f(n)\f(n−1))=(p1−p\10)(f(n−1)\f(n−2))
对于每一个雷的位置进行分段,计算到那个地方不踩中的概率,递推所有段走到雷处不中的概率,用乘法原理就能求出来结果了。
1 | typedef struct Matrix { |
v1.5.2