POJ 3744 Scout YYF I(矩阵快速幂优化+概率dp)
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)相关推荐
- HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...
- 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)
题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...
- 15年第六届蓝桥杯第九题_(矩阵快速幂优化的动态规划)
垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...
- 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)
垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...
- CF989E A Trance of Nightfall(概率+矩阵快速幂优化+倍增)
CF传送门 洛谷传送门 [题目分析] 在zxy大佬的讲解下终于懂了这道题的做法了qwq... 首先根据题意,出发点不一定在特殊点上,但第一次操作后,之后所有的操作都是在特殊点上,所以先考虑从线上出发的 ...
- AtCoder abc256全题解(区间合并模板、矩阵快速幂优化dp、线段树……)
文章目录 A B C-枚举 D-区间合并模板 E-图论建模,函数图的性质 题意 思路 代码 F-树状数组 题意 思路 代码 G-矩阵快速幂优化dp H-线段树 思路 实现 传送门 本文CSDN 本文j ...
- 【noip2016十连测round3】T3 涂色游戏 【矩阵快速幂优化dp】
涂色游戏 题解: 推一推公式. 我们让f[i][j]表示第i列有j种颜色的方案总数,k表示i-1列用了多少种颜色,l表示第i列用了多少种没有在i-1列出现的颜色,G(i,j)表示i个格子涂j种颜色的方 ...
- Q老师度假(变形矩阵快速幂优化DP)
问题描述 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期. 假期中不同的穿衣方式会有不同的快乐值. 已知 Q老师 一共有 M 件衬衫,且如果昨天穿的是衬衫 A,今天穿的是衬衫 B,则 Q老师 今天 ...
- POJ 3744(Scout YYF I )
题意: 从1开始每次有p的概率往前跳一步,1-p的概率跳两步.给定n个点以及它们的坐标,若跳到这些点上则算失败,求安全经过这些点的概率. 分析:容易推出 dp[i] = dp[i-1]*p + dp ...
- POJ 3744 Scout YYF I 期望dp
给出n≤10n\leq10n≤10个地雷,它们的位置在[1,1e8][1,1e8][1,1e8]之间.然后一个人从111出发,有PPP的概率走一步,有1−P1-P1−P的概率走两步.求问安全离开的雷区 ...
最新文章
- NOIP2013 华容道
- 反反复复的磁盘丢失故障处理过程
- “骗子”成民企院士第一人:把认真当信仰,人生就会开挂
- 大型互联网分布式企业微服务云架构
- c#sql数据导出到excel
- python模拟seo_Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)_天津SEO...
- 腾讯专家深度解析赛题,现场答疑助力上分!
- 【PostgreSQL-9.6.3】创建、修改、删除PostgreSQL数据库
- 饥荒服务器地图配置文件,饥荒联机版世界地图设置心得 联机全地图设置方法...
- 用css制作网站首页
- 听说你不会用Lumion做通道图?
- 用计算机完成韩信点兵,韩信点兵问题.PPT
- 贴出最新整理的英语谚语大全(3267条)
- Excel选中单元格光标一直闪
- 一文详解知识图谱关键技术与应用 | 公开课笔记
- 记录:nodejs 裁切图片的方法
- 华为设备DHCP snooping配置命令
- 158_百度输入法如何sj打出当前时间戳
- 最新计算机word基础知识,最新计算机Word、Excel及部分基础知识.doc
- mix3信号测试软件,小米MIX3三大绝招保证信号质量,实测下来还优于iPhone XS Ma