poj4474 Scout YYF I(概率dp+矩阵快速幂)
poj4474 Scout YYF I(概率dp+矩阵快速幂)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4100 | Accepted: 1051 |
Description
Input
Each test case contains two lines.
The First line of each test case is N (1 ≤ N ≤ 10) and p (0.25 ≤ p ≤ 0.75) seperated by a single blank, standing for the number of mines and the probability to walk one step.
The Second line of each test case is N integer standing for the place of N mines. Each integer is in the range of [1, 100000000].
Output
Sample Input
1 0.5 2 2 0.5 2 4
Sample Output
0.5000000 0.2500000
Source
显然,如果k 号位有雷,那么安全通过这个雷只可能是在 k-1 号位选择走两步到 k+1 号位。因此,可以得到如下结论:在第 i 个雷的安全通过的概率就是从 a[i-1]+1 号位到 a[i]+1 号位的概率。于是,可以用 1 减去就可以求出安全通过第 i 个雷的概率,最后乘起来即可,比较悲剧的是数据很大,所以需要用到矩阵快速幂……
类似斐波那契数列,ans[i]=p*ans[i-1]+(1-p)*ans[i-2] ,构造矩阵为
- #include <iostream>
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- #include<algorithm>
- using namespace std;
- int s[20];
- double q,p;
- struct node
- {
- double dp[2][2];//矩阵
- };
- node mult(node a,node b)//矩阵乘法
- {
- int i,j,n,k;
- node temp;
- for(i=0;i<2;i++)
- {
- for(j=0;j<2;j++)
- {
- temp.dp[i][j]=0;
- for(k=0;k<2;k++)
- temp.dp[i][j]+=a.dp[i][k]*b.dp[k][j];
- }
- }
- return temp;
- }
- node cal(int N)//快速幂
- {
- node a,res;
- a.dp[0][0]=p;
- a.dp[0][1]=q;
- a.dp[1][0]=1;
- a.dp[1][1]=0;
- res.dp[0][0]=1;
- res.dp[0][1]=0;
- res.dp[1][0]=0;
- res.dp[1][1]=1;
- while(N)
- {
- if(N&1)
- {
- res=mult(res,a);
- }
- a=mult(a,a);
- N>>=1;
- }
- return res;
- }
- int main()
- {
- int i,j,n,m,max,flag;
- double tempqn;
- node temp,a;
- while(scanf("%d%lf",&n,&p)!=EOF)
- {
- q=1-p;
- s[0]=0;
- for(i=1;i<=n;i++)
- {
- cin>>s[i];
- }
- sort(s+1,s+1+n);
- for(i=1,flag=1;i<n;i++)
- {
- if(s[i]+1==s[i+1])
- flag=0;
- }
- if(!flag||s[1]==1)
- {
- puts("0.0000000");
- <span style="white-space:pre"> </span>continue;
- }
- a.dp[0][0]=1;
- a.dp[0][1]=0;
- a.dp[1][0]=0;
- a.dp[1][1]=0;
- for(i=1;i<=n;i++)
- {
- temp=cal(s[i]-s[i-1]-2);
- a=mult(temp,a);
- a.dp[0][0]=a.dp[0][0]*q;
- a.dp[0][1]=0;
- a.dp[1][0]=0;
- a.dp[1][1]=0;
- }
- printf("%.7f\n",a.dp[0][0]);
- }
- return 0;
- }
poj4474 Scout YYF I(概率dp+矩阵快速幂)相关推荐
- POJ 3744:Scout YYF I 概率DP+特征方程+快速幂
Scout YYF I 题目链接: http://poj.org/problem?id=3744 题意: 有个人要到一个叫"mine road"的地方,路线是一条直线,起点在1,路 ...
- Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】
题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...
- 第九届河南省赛 宣传墙 //状压dp+矩阵快速幂+dfs
http://nyoj.top/problem/1273 状压dp+矩阵快速幂+dfs 1273-宣传墙 内存限制:64MB 时间限制:1000ms 特判: No 通过数:19 提交数:64 难度:4 ...
- 【BZOJ】4861: [Beijing2017]魔法咒语 AC自动机+DP+矩阵快速幂
[题意]给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量.(60%)n,m<=50,L<=100.(40%)原串长度为1或2,L<=10^18. [算法 ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)
题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为. 3.如果当前回合掷得 ...
- BZOJ 2004 公交线路(状压DP+矩阵快速幂)
注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...
- 2018.09.28 hdu5434 Peace small elephant(状压dp+矩阵快速幂)
传送门 看到n的范围的时候吓了一跳,然后发现可以矩阵快速幂优化. 我们用类似于状压dp的方法构造(1(1(1<<m)∗(1m)*(1m)∗(1<<m)m)m)大小的矩阵. 然后 ...
- bzoj 3329: Xorequ(DP+矩阵快速幂)
3329: Xorequ Time Limit: 1 Sec Memory Limit: 256 MB Submit: 1134 Solved: 491 [Submit][Status][Disc ...
- bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)
4818: [Sdoi2017]序列计数 Time Limit: 30 Sec Memory Limit: 128 MB Submit: 769 Solved: 463 [Submit][Stat ...
- 骨牌问题(DP+矩阵快速幂)
在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 * 3的方格,共有3种不同的排法.(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果) In ...
最新文章
- 深入了解Mvc路由系统
- 【线上分享】视频质量评价:挑战与机遇
- linux s t i a权限,关于Linux下s、t、i、a权限
- php mysql删除失败_php+MySQL实战案例【七】数据编辑、删除
- 啊哈c语言答案1.3,啊哈C语言编程-第2课-让计算机开口说话
- Bert遇到文本分类:如何用好Bert这把刀
- 华为最新解bl解锁码计算工具_黔隆科技刷机教程红米note4X低配版忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- PPT中导出高分辨率图片的方法
- 传感器技术-电阻式传感器(学习笔记二)
- Android源码编译:openjdk安装
- putty使用SSH密钥登录Linux实例
- 喜欢的歌——隐形的翅膀(张韶涵)
- linux中rcf命名管道,RCF-进程间为C通讯
- sqlServer取余数
- 【Android】APP嵌入百度地图骑行导航一直初始化引擎失败解决办法
- python提取图片文字视频教学_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...
- 关于pycharm中html在页面访问的记录(授权问题)
- word打带圈符号(带圈对勾为例)
- DICOM:基于fo-dicom的简易DICOM Viewer
- 【tio-websocket】4、tio-websocket-server实现自定义集群模式