Spoj4060 game with probability Problem
题目链接:Click here
Solution:
刚开始还以为博弈论加概率,然而并不是...
设两个状态:\(f(i)\)表示当前剩下\(i\)个石头时,先手的获胜概率,\(g(i)\)为后手的获胜概率(注:先后手定义参照博弈论。。。)
我们再设\(p'\)表示\(A\)抛硬币为正面朝上的概率,\(q'\)表示\(B\)抛硬币为正面朝上的概率,则易得转移式:
g(i)=q'f(i-1)+(1-q')f(i)
\]
现在我们是不能直接进行dp的,因为方程中存在与它同阶段的值,则我们需要进行转化
f(i)=p'g(i-1)+(q'f(i-1)+(1-q')f(i))-p'(q'f(i-1)+(1-q')f(i))\\
f(i)=p'g(i-1)+q'f(i-1)+(1-q')f(i)-p'q'f(i-1)-p'(1-q')f(i)\\
f(i)=p'g(i-1)+q'f(i-1)-p'q'f(i-1)+(1-p')(1-q')f(i)\\
f(i)=\frac{p'g(i-1)+q'(1-p')f(i-1)}{1-(1-p')(1-q')}
\]
类似的,我们同样可以得到关于\(g(i)\)的式子:
\]
则这就是最终的转移方程式,但是,我们的\(p'q'\)的定义是不同于题目给定的\(pq\)的,则我们需要具体分情况讨论:
当\(f(i-1)>g(i-1)\)时,明显的,\(A\)不希望拿走石头,\(B\)也不希望拿走石头,则他们都希望硬币反面朝上
当\(f(i-1)<g(i-1)\)时,\(A\)是希望拿走石头的,\(B\)也是希望拿走石头的,则他们都希望硬币正面朝上
到这里,我们还是有一个问题并没有解决,就是\(n\)过于大,事实上,\(n\)越大,概率越趋向于一个定值,而题目只要求保留6位数,则我们只要让\(n\)到1000就行了QAQ
Code:
#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int n;double q,p,f[N],g[N];
double rev(double x){return 1.0-x;}
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main(){
int T=read();
while(T--){
n=read();
scanf("%lf%lf",&p,&q);
f[0]=0,g[0]=1;n=min(n,N-1);
for(int i=1;i<=n;i++){
double gl1=p,gl2=q;
if(f[i-1]>g[i-1]) gl1=rev(gl1),gl2=rev(gl2);
f[i]=(1.0*gl2*(1.0-gl1)*f[i-1]+gl1*g[i-1])/(1-rev(gl1)*rev(gl2));
g[i]=(1.0*gl1*(1.0-gl2)*g[i-1]+gl2*f[i-1])/(1-rev(gl1)*rev(gl2));
}printf("%.6lf\n",f[n]);
}return 0;
}
Spoj4060 game with probability Problem的更多相关文章
- 【BZOJ2318】Spoj4060 game with probability Problem 概率
[BZOJ2318]Spoj4060 game with probability Problem Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬 ...
- BZOJ 2318: Spoj4060 game with probability Problem( 概率dp )
概率dp... http://blog.csdn.net/Vmurder/article/details/46467899 ( from : [辗转山河弋流歌 by 空灰冰魂] ) 这个讲得很好 , ...
- BZOJ2318: Spoj4060 game with probability Problem
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #i ...
- 【BZOJ 2318】 2318: Spoj4060 game with probability Problem(概率DP)
2318: Spoj4060 game with probability Problem Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 371 Sol ...
- 2318: Spoj4060 game with probability Problem
2318: Spoj4060 game with probability Problem Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 356 Sol ...
- Bzoj 2318 Spoj4060 game with probability Problem
2318: Spoj4060 game with probability Problem Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 524 Sol ...
- BZOJ 2318: Spoj4060 game with probability Problem (概率dp)(博弈论)
2318: Spoj4060 game with probability Problem Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果 ...
- 【bzoj2318】Spoj4060 game with probability Problem
题目描述 Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果正面朝上,则从n个石子中取出一个石子,否则不做任何事.取到最后一颗石子的人胜利.Alice在投掷硬币时有 ...
- 【bzoj2318】Spoj4060 game with probability Problem 概率dp
题目描述 Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果正面朝上,则从n个石子中取出一个石子,否则不做任何事.取到最后一颗石子的人胜利.Alice在投掷硬币时有 ...
随机推荐
- JavaScript Array Reduce用于数组求和
需求一 假设有一个数组,需要对其中的元素进行求和. const numbers = [1, -1, 2, 3]; 传统写法,使用for循环求和 const numbers = [1, -1, 2, 3 ...
- Sqlserver2012 sa账户登录添加其他账户
1.添加admin账户的设置 2.另外 sa登录后,点击服务器名,右键->属性->安全性 的设置: 3.其次是Sqlserver配置管理器,SQL Server服务需要重启: SQL Se ...
- limux密钥对配置登陆主机
1. Linux主机免密码使用密钥登陆 这里假设主机A(192.168.0.113)用来远程连接主机B(192.168.0.186) 在主机A上执行如下命令来生成配对密钥:ssh-keygen -t ...
- Linux安装FastDFS~Nginx~
确保Linux联网,我这里使用的是CentOS7操作,联网教程 https://www.cnblogs.com/taopanfeng/p/10978752.html 先把指定的四个文件放入指定目录 安 ...
- python子进程模块subprocess详解
subprocess--子进程管理器一.subprocess 模块简介subprocess最早是在2.4版本中引入的.subprocess模块用来生成子进程,并可以通过管道连接它们的输入/输出/错误, ...
- Linux课程学习 第四课
学习必须如蜜蜂一样,采过许多花,这才能酿出蜜来 这月事比较多,每课的笔记都会慢慢补回来的,做事得有始有终 在网络上,人们越来越倾向于传输压缩格式的文件,原因是压缩文件体积小,在网速相同的情况下,传输时 ...
- MongoDB入门_shell基本操作
使用shell客户端连接mongoDB数据库 [root@localhost mongodb_simple]# ./bin/mongo /admin mongoDB的简单基本操作 1. mongoDB ...
- 关于form表单回车自动刷新
现象: form表单,输入框聚焦后,回车,页面刷新跳转. 原因: form表单,在只有一个输入框的时候,在点击回车时,就会触发表单的提交,而form若没有url,则提交后就会刷新页面,导致跳转. 解决 ...
- A Magic Lamp HDU - 3183 (逆向贪心/RMQ)
Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so ...
- Spring mvc数据转换 格式化 校验(转载)
原文地址:http://www.cnblogs.com/linyueshan/p/5908490.html 数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标 ...