POJ 3744 数学题概率题 矩阵乘幂

本文介绍了一种解决特定概率问题的方法,通过将问题分解成若干子问题,并利用矩阵快速幂算法进行高效计算。该方法适用于求解路径上遇到障碍物(如炸弹)的概率问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转的网上的解题报告http://hi.baidu.com/rpsproblem/blog/item/d2cbe67aa1d8b5fd0bd1875f.html,用于备战校赛

按照题目的意思,我们很容易推出公式:
f[i] = p*f[i-1] + (1-p)*f[i-2];
f[i]表示到达位置i的概率(不是安全到达那些很复杂之类的概率,就只是简单的到达的概率),p为题目给的概率
由于有炸弹的原因,就不能直接算了。
这里我用 x[i]表示第i颗炸弹的位置
但如果把整个过程按照炸弹来分阶段,起点为x[i-1]+1,终点为x[i],这样每个阶段就只有终点有炸弹了(这就很容易算可达概率了)
所以我们可先算在阶段 i ,从起点x[i-1]+1到x[i]的概率qi,这个概率就表示踩到炸弹x[i+1]的概率了,那么1-qi就表示这一阶段安全的概率了(我有点不是很明白的就是它具体跳到哪里去了,不过如果按照这样划分阶段的模型,很容易知道结果是正确的)
所以把每个阶段安全可达的概率乘起来就是总的概率了(1-q1)(1-q2)...(1-qn)

这里需要用矩阵乘法快速幂来加速
观察公式
f[i] = p*f[i-1] + (1-p)*f[i-2];
跟Fibonacci数列很像,可用poj3070的方法来构造

|   p   1 |
| 1- p 0 |

然后就可用快速幂加速了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值