给出n≤10n\leq10n≤10个地雷,它们的位置在[1,1e8][1,1e8][1,1e8]之间。然后一个人从111出发,有PPP的概率走一步,有1−P1-P1−P的概率走两步。求问安全离开的雷区的概率是多少。
虽然地雷的范围很大,但是地雷的个数很少。考虑地雷之间的空着的这一段区间。每次的转移都是相同的,用矩阵快速幂计算。
然后走到雷的前面,如果两个雷连续,那么直接输出000。否则走到下一个位置只能是乘上1−P1-P1−P。

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=15;
int a[N];
struct Matrix {double m[3][3];void init(double P) {m[1][1]=P;m[1][2]=1-P;m[2][1]=1;m[2][2]=0;}Matrix operator *(const Matrix &rhs) const {Matrix c={};for(int k=1;k<=2;k++) {for(int i=1;i<=2;i++) {for(int j=1;j<=2;j++) {c.m[i][j]+=m[i][k]*rhs.m[k][j];}}}return c;}
};
double fpow(Matrix a,int p) {Matrix ans={};for(int i=1;i<=2;i++)ans.m[i][i]=1;while(p) {if(p&1) ans=ans*a;a=a*a;p>>=1; }return ans.m[1][1];
}
int main() {int n;double P;while(scanf("%d%lf",&n,&P)!=EOF) {double ans=1.0;for(int i=1;i<=n;i++)    scanf("%d",&a[i]);sort(a+1,a+1+n);for(int i=1;i<=n;i++) {if(a[i]==a[i-1]+1) {ans=0.0;break;}else if(a[i]==a[i-1]+2) {ans=ans*(1-P);}else {int y=a[i]-a[i-1]-2;Matrix a;a.init(P);ans=ans*(fpow(a,y));ans=ans*(1-P);}}printf("%.7f\n",ans); } return 0;
}

POJ 3744 Scout YYF I 期望dp相关推荐

  1. POJ 3744(Scout YYF I )

    题意: 从1开始每次有p的概率往前跳一步,1-p的概率跳两步.给定n个点以及它们的坐标,若跳到这些点上则算失败,求安全经过这些点的概率. 分析:容易推出 dp[i] = dp[i-1]*p +  dp ...

  2. POJ 3744:Scout YYF I 概率DP+特征方程+快速幂

    Scout YYF I 题目链接: http://poj.org/problem?id=3744 题意: 有个人要到一个叫"mine road"的地方,路线是一条直线,起点在1,路 ...

  3. POJ 2096 Collecting Bugs:期望dp

    题目链接:http://poj.org/problem?id=2096 题意: 有一个程序猿,他每天都会发现一个bug. bug共有n个种类.属于某一个种类的概率为1/n. 有s个子系统,每个bug属 ...

  4. poj 2096 , zoj 3329 , hdu 4035 —— 期望DP

    题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...

  5. 插头DP 概率DP / 期望DP

    插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...

  6. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  7. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  8. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  9. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

最新文章

  1. centos 6.4 /var/log/secure 不记录日志的問題
  2. eclipse 使 用Ctrl+鼠标左键进入mapper.xml文件的方法
  3. 浏览器扩展系列————透明浏览器窗口的实现
  4. MATLAB常用命令、函数与运算
  5. boost::lambda::constructor用法的测试程序
  6. Javascript 笔记与总结(2-3)Javascript 运算符、控制结构与对象操作
  7. 前端学习(2713):重读vue电商网站33之实现首页路由重定向
  8. [51nod1201]整数划分
  9. python excel转xml
  10. 华为网络技术大赛笔记——存储器基础原理
  11. [教程] 虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像! 安装
  12. Scala Test
  13. sqlnet.ora
  14. 基于FPGA的AD9854并行接口驱动(VerilogHDL语言)
  15. vue-element-admin 增删改查(五)
  16. Typora、Markdown中的公式,颜色汇总
  17. 杭电c语言课程设计短学期第七次作业,杭电短学期数字电子钟整点报时系统实验报告...
  18. PTA 7-75 正方体表面积计算
  19. 系统上线前的“培训”工作
  20. App测试的方法和思路有哪些?一篇文章告诉你答案

热门文章

  1. 入手ThinkPad X61,从此加入“黑社会”
  2. 怎么批量删除word文档超链接?
  3. matlab学习(三)三维曲线和曲面
  4. vue将qrcodejs生成的二维码下载到本地
  5. 使用ue4做一个可以显示任意数字变化的计数器方法
  6. 吴恩达机器学习ex1 Python实现
  7. python退出全屏_实现网页全屏和退出全屏JS代码,多浏览器兼容
  8. 我母亲在一家计算机公司工作,关于母亲的作文800字5篇
  9. 一本通1304:数的划分
  10. 2022美亚杯个人赛