POJ FOUR QUARTERS
http://poj.org/problem?id=1217
题意:两个人在玩抛硬币的游戏,没回合抛两次,两次的结果不同,双方得到的分也是不同的,要求输出前20轮中,没回合A胜,B胜或是平局的概率。
算法:概率DP
分析:用dp[i][j][k] 来表示第i轮,A得的总分数为j,B得的分数是k的概率 ,用向后递推的思想就可以求解本题了。
代码:
/*
POJ 1217 FOUR QUARTERS
Tips : DP
runtime 0ms
Memory 1080K
*/
#include<stdio.h>
#include<string.h>
const double P1 = 1.0 / 2.0 ;
const double P2 = 1.0 / 4.0 ;
int add_a[15] = {0,1,1,2,0,0,1,-1,0,0} ;
int add_b[15] = {0,0,-1,-1,1,0,0,2,0,-1} ;
double p[15] = {1,P2*P2,P1*P2,P2*P2,P1*P2,P1*P1,P1*P2,P2*P2,P2*P1,P2*P2} ;
double dp[21][65][65] ;
void DP(){memset(dp,0,sizeof(dp));dp[0][20][20] = 1 ;for(int i=1;i<=20;i++){for(int j=0;j<=60;j++){int score1 = j-20 ;for(int k=0;k<=60;k++){int score2 = k - 20 ;for(int st=1;st<=9;st++){int n_s1 = score1 + add_a[st] ;int n_s2 = score2 + add_b[st] ;dp[i][n_s1+20][n_s2+20] += dp[i-1][j][k] * p[st] ;}}}}printf("Round A wins B wins Tie\n");for(int i=1;i<=20;i++){double a_win = 0 , b_win = 0 , tie = 0 ;for(int j=0;j<=60;j++){for(int k=0;k<=60;k++){if(j>k) a_win+=dp[i][j][k] ;else if(j<k) b_win += dp[i][j][k] ;else tie += dp[i][j][k] ;}}printf("%5d%10.4f%%%9.4f%%%9.4f%%\n",i,a_win*100,b_win*100,tie*100);}
}
int main(){freopen("1out","w",stdout);DP() ;return 0;
}
POJ FOUR QUARTERS相关推荐
- POJ 1217 FOUR QUARTERS 笔记
抛掷硬币,玩家A.B每轮分别抛两次硬币,每轮得分如图.求前20轮A赢,B赢,打平的概率.
- POJ 1217 FOUR QUARTERS
题目意思是,AB两个人掷硬币,每次一个人掷两次,然后对应图标里面得分,要你输出前20回合 A赢,B赢,或是平均的概率 dp还是不怎么会,参考别人代码才敲出来的 1 #include<iostre ...
- (多重背包+记录路径)Charlie's Change (poj 1787)
http://poj.org/problem?id=1787 描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- poj题目详细分类及算法推荐题目
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar Game 简单题 ...
- ACM POJ 题目分类(完整整理版本)
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar Game 简单题 ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法: (1)枚举 (1753,2965) (2)贪心(13 ...
- Poj·Picnic Planning
初见安~这里是传送门:Poj P1639 Description The Contortion Brothers are a famous set of circus clowns, known wo ...
最新文章
- 数据中心布线系统构成及不同规模范例
- SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
- 2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】
- html 实时预览在线,用HTML+CSS做一个实时预览的markdown编辑器
- H5新标签--语义化标签
- oracle成本模块培训,Oracle App 培训笔记(5) -- 成本管理模块表结构整理 续
- php执行查询的代码,PHP实现动态执行代码的方法
- 阿里云服务器Discuz论坛程序安装
- CS231n——机器学习算法——线性分类(上: 线性分类器)
- FMVP詹姆斯,王者归来!英雄实至名归!
- Swift复数计算器
- 山石岩读丨一文读懂区块链安全:区块链会带来哪些冲击?
- PDF文件进行在线分割如何去操作
- 可以储存照片的字段类型是_在数据库中可用来存储图片的字段对象是哪种类型的字段?...
- STM32 ADC最大采样频率
- 设计师必须知道的 5个设计灵感网站
- mysql month函数值类型_MySQL常用函数(分类别整理)
- Zabbix #Zabbix 构建企业级监控告警平台 1
- 临汾空气质量排名垫底是因不努力?生态环境部回应
- GitHub+hexo搭建个人博客(2019新版超详细教程)
热门文章
- 编程入门:什么是前端和后端?区别有3点
- 低调的移动互联网出海之王——「茄子快传」成长简史
- openpyxl修改图表中纯色填充的透明度和颜色
- 三国杀体验服服务器维护中,三国杀体验服网址
- Linux打开和关闭防火墙指令
- 第七期,MySQL如何创建分组查询!!!!
- TortoiseSVN环境搭建
- 计算机操作系统学习笔记——文件管理之文件系统基础
- 【R语言】实验三 数据可视化
- String a = “abc“ 和 new String(“abc“)的区别