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在投掷硬币时有 ...
随机推荐
- react 中 EventEmitter 事件总线机制
此机制可用于 react 中兄弟组件中的通信 npm install events -S 事件总线: // eventBus.js import {EventEmitter} from 'events ...
- java script 的注释与分号
// 单行注释 /**/多行注释 在js 中 变量.函数和操作符都是区分大小写的 什么是标识符 变量.函数.属性的名字.或者函数的参数. 变量的命名规范:不能以数字开头. 变量声明: var nam ...
- 软件设计分为结构化设计(SD)
软件设计分为结构化设计(SD)与面向对象设计(OOD). 其中结构化设计SD是一种面向数据流的方法,它以SRS(软件需求规格说明书)和SA(结构化分析)阶段所产生的和数据字典等文档为基础,是一个自顶向 ...
- (5.2.2)配置服务器参数——dbcc跟踪标记(trace)
关键字:跟踪标记,跟踪 [1]常规dbcc命令 dbcc help('?') --查看dbcc 所有命令,常规下只有32个常用的dbcc TRACEON(2588) --指定了2588标记的话,你就可 ...
- DataLinkLayer(数据链路层)
DataLinkLayer(数据链路层) The Reference Model(参考模型) layer name 5 Application layer 4 TransPort layer 3 Ne ...
- 洛谷 P2384 最短路 题解
题面 这道题需要用到一个神奇的知识点:log(n*m)=log(n)+log(m): 所以对所有边权取个log,然后算log的最短路的同时维护乘积即可 #include <bits/stdc++ ...
- hdu3829 二分匹配 最大独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Problem ...
- flask中使用jsonify和json.dumps的区别
一.实验 python的flask框架为用户提供了直接返回包含json格式数据响应的方法,即jsonify,在开发中会经常用到.如下一段简单的flask后端代码,服务端视图函数根据请求参数返回json ...
- 解决jenkins的Console Output中文乱码
1.本地机器设置环境变量(设置后需要注销计算机才能生效) key: JAVA_TOOL_OPTIONS value:-Dfile.encoding=UTF- 2. 通过Jenkins全局设置的方式 ...
- 单元测试 - tox 使用
1. 问题一 $ tox -e pep8 -- testdemo.server pep8 installed: alembic==,amqp==,appdirs==,Babel==,beautiful ...