http://poj.org/problem?id=3744

题意:

现在有个屌丝要穿越一个雷区,雷分布在一条直线上,但是分布的范围很大,现在这个屌丝从1出发,p的概率往前走1步,1-p的概率往前走2步,求最后顺利通过雷区的概率。

思路:

首先很容易能得到一个递推式:$dp[i]=p*dp[i-1]+(1-p)*dp[i-2]$。但是直接递推肯定不行,然后我们发现这个很容易构造出矩阵来,但是这样还是太慢。

接下来讲一下如何优化,对于第i个雷,它的坐标为x[i],那么那顺利通过它的话,只能在x[i]-1的位置走2步。

观察上图,可以发现每次起点就相当于是雷后面的一个格子,这样的话我们就可以分块处理(有多少雷就分多少块),先计算出起点到雷的概率y,那么1-y就是顺利通过这块的概率。最后乘法原理乘起来即可。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<vector>
 6 #include<stack>
 7 #include<queue>
 8 #include<cmath>
 9 #include<map>
10 #include<set>
11 using namespace std;
12 typedef long long ll;
13 const int INF = 0x3f3f3f3f;
14 const int maxn=100000+10;
15
16 int n;
17 double p, ans;
18 int x[15];
19
20 struct Matrix
21 {
22     double mat[2][2];
23     Matrix()
24     {
25         for(int i=0;i<2;i++)
26         for(int j=0;j<2;j++)
27             mat[i][j]=0;
28     }
29     Matrix operator* (const Matrix& b) const
30     {
31         Matrix c;
32         for(int i=0;i<2;i++)
33         for(int j=0;j<2;j++)
34         for(int k=0;k<2;k++)
35             c.mat[i][j]+=mat[i][k]*b.mat[k][j];
36         return c;
37     }
38 }base;
39
40 Matrix q_pow(Matrix base, int n)
41 {
42     Matrix res;
43     res.mat[0][0]=res.mat[1][1]=1;
44     while(n)
45     {
46         if(n&1) res=res*base;
47         base=base*base;
48         n>>=1;
49     }
50     return res;
51 }
52
53 int main()
54 {
55     //freopen("in.txt","r",stdin);
56     while(~scanf("%d%lf",&n,&p))
57     {
58         for(int i=1;i<=n;i++)  scanf("%d",&x[i]);
59         sort(x+1,x+n+1);
60         base.mat[0][0]=p;
61         base.mat[0][1]=1-p;
62         base.mat[1][0]=1;
63         base.mat[1][1]=0;
64         ans=1;
65         Matrix tmp=q_pow(base, x[1]-1);
66         ans*=(1-tmp.mat[0][0]);
67         for(int i=2;i<=n;i++)
68         {
69             if(x[i]==x[i-1])  continue;
70             tmp=q_pow(base, x[i]-x[i-1]-1);
71             ans*=(1-tmp.mat[0][0]);
72         }
73         printf("%.7f\n",ans);
74     }
75     return 0;
76 }

转载于:https://www.cnblogs.com/zyb993963526/p/7448507.html

POJ 3744 Scout YYF I(矩阵快速幂优化+概率dp)相关推荐

  1. HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )

    题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...

  2. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)

    题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...

  3. 15年第六届蓝桥杯第九题_(矩阵快速幂优化的动态规划)

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

  4. 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

  5. CF989E A Trance of Nightfall(概率+矩阵快速幂优化+倍增)

    CF传送门 洛谷传送门 [题目分析] 在zxy大佬的讲解下终于懂了这道题的做法了qwq... 首先根据题意,出发点不一定在特殊点上,但第一次操作后,之后所有的操作都是在特殊点上,所以先考虑从线上出发的 ...

  6. AtCoder abc256全题解(区间合并模板、矩阵快速幂优化dp、线段树……)

    文章目录 A B C-枚举 D-区间合并模板 E-图论建模,函数图的性质 题意 思路 代码 F-树状数组 题意 思路 代码 G-矩阵快速幂优化dp H-线段树 思路 实现 传送门 本文CSDN 本文j ...

  7. 【noip2016十连测round3】T3 涂色游戏 【矩阵快速幂优化dp】

    涂色游戏 题解: 推一推公式. 我们让f[i][j]表示第i列有j种颜色的方案总数,k表示i-1列用了多少种颜色,l表示第i列用了多少种没有在i-1列出现的颜色,G(i,j)表示i个格子涂j种颜色的方 ...

  8. Q老师度假(变形矩阵快速幂优化DP)

    问题描述 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期. 假期中不同的穿衣方式会有不同的快乐值. 已知 Q老师 一共有 M 件衬衫,且如果昨天穿的是衬衫 A,今天穿的是衬衫 B,则 Q老师 今天 ...

  9. POJ 3744(Scout YYF I )

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

  10. POJ 3744 Scout YYF I 期望dp

    给出n≤10n\leq10n≤10个地雷,它们的位置在[1,1e8][1,1e8][1,1e8]之间.然后一个人从111出发,有PPP的概率走一步,有1−P1-P1−P的概率走两步.求问安全离开的雷区 ...

最新文章

  1. NOIP2013 华容道
  2. 反反复复的磁盘丢失故障处理过程
  3. “骗子”成民企院士第一人:把认真当信仰,人生就会开挂
  4. 大型互联网分布式企业微服务云架构
  5. c#sql数据导出到excel
  6. python模拟seo_Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)_天津SEO...
  7. 腾讯专家深度解析赛题,现场答疑助力上分!
  8. 【PostgreSQL-9.6.3】创建、修改、删除PostgreSQL数据库
  9. 饥荒服务器地图配置文件,饥荒联机版世界地图设置心得 联机全地图设置方法...
  10. 用css制作网站首页
  11. 听说你不会用Lumion做通道图?
  12. 用计算机完成韩信点兵,韩信点兵问题.PPT
  13. 贴出最新整理的英语谚语大全(3267条)
  14. Excel选中单元格光标一直闪
  15. 一文详解知识图谱关键技术与应用 | 公开课笔记
  16. 记录:nodejs 裁切图片的方法
  17. 华为设备DHCP snooping配置命令
  18. 158_百度输入法如何sj打出当前时间戳
  19. 最新计算机word基础知识,最新计算机Word、Excel及部分基础知识.doc
  20. mix3信号测试软件,小米MIX3三大绝招保证信号质量,实测下来还优于iPhone XS Ma

热门文章

  1. 众为兴SCARA四轴机械臂编程(二)——基于硬接线替代Modbus通讯
  2. h2ouve下载 insyde_一种基于InsydeBIOS的BIOS更改方法及系统与流程
  3. apa引用要在文中吗_英文论文格式要求玩转APA
  4. 查看虚拟机以及自己主机ip
  5. Tomcat出现中文乱码
  6. 数据产品-广告投放数据打通
  7. 使用webots对并联结构进行仿真
  8. 2022年防爆电气考试题及答案
  9. uwb定位与wifi、蓝牙和RFID定位技术的区别
  10. 闲谈安全测试之IAST