POJ 3744 Scout YYF I 期望dp
给出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相关推荐
- POJ 3744(Scout YYF I )
题意: 从1开始每次有p的概率往前跳一步,1-p的概率跳两步.给定n个点以及它们的坐标,若跳到这些点上则算失败,求安全经过这些点的概率. 分析:容易推出 dp[i] = dp[i-1]*p + dp ...
- POJ 3744:Scout YYF I 概率DP+特征方程+快速幂
Scout YYF I 题目链接: http://poj.org/problem?id=3744 题意: 有个人要到一个叫"mine road"的地方,路线是一条直线,起点在1,路 ...
- POJ 2096 Collecting Bugs:期望dp
题目链接:http://poj.org/problem?id=2096 题意: 有一个程序猿,他每天都会发现一个bug. bug共有n个种类.属于某一个种类的概率为1/n. 有s个子系统,每个bug属 ...
- poj 2096 , zoj 3329 , hdu 4035 —— 期望DP
题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...
- 插头DP 概率DP / 期望DP
插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...
- luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...
- [SCOI2008]奖励关(期望dp)
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...
- 【bzoj4318】OSU! 期望dp
题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...
- 【loj6342】跳一跳 期望dp
题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...
最新文章
- centos 6.4 /var/log/secure 不记录日志的問題
- eclipse 使 用Ctrl+鼠标左键进入mapper.xml文件的方法
- 浏览器扩展系列————透明浏览器窗口的实现
- MATLAB常用命令、函数与运算
- boost::lambda::constructor用法的测试程序
- Javascript 笔记与总结(2-3)Javascript 运算符、控制结构与对象操作
- 前端学习(2713):重读vue电商网站33之实现首页路由重定向
- [51nod1201]整数划分
- python excel转xml
- 华为网络技术大赛笔记——存储器基础原理
- [教程] 虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像! 安装
- Scala Test
- sqlnet.ora
- 基于FPGA的AD9854并行接口驱动(VerilogHDL语言)
- vue-element-admin 增删改查(五)
- Typora、Markdown中的公式,颜色汇总
- 杭电c语言课程设计短学期第七次作业,杭电短学期数字电子钟整点报时系统实验报告...
- PTA 7-75 正方体表面积计算
- 系统上线前的“培训”工作
- App测试的方法和思路有哪些?一篇文章告诉你答案