博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1419——Red is good(期望dp)
阅读量:4502 次
发布时间:2019-06-08

本文共 695 字,大约阅读时间需要 2 分钟。

题头

描述

桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。
输入
一行输入两个数R,B,其值在0到5000之间
输出
在最优策略下平均能得到多少钱。
样例输入
5 1
样例输出
4.166666
提示
输出答案时,小数点后第六位后的全部去掉,不要四舍五入.

又是一道概率dp

发现内存不够,只能用滚动数组优化,因为每一个状态只和他前一个状态有关

设dp[i][j]表示还剩i个red,j个black时的期望值

然后每一轮判断当前期望是正是负

如果是负了的话肯定是不能选的

注意顺带要判断这一轮要不要再翻牌

还有记住不要四舍五入

#include
using namespace std;double dp[2][5005];int r,b;int main(){ cin>>r>>b; int tmp=1; for(int i=1;i<=r;i++) { dp[tmp][0]=i; for(int j=1;j<=b;j++) { dp[tmp][j]=max(0.0,1.0*i/(i+j)*(dp[tmp^1][j]+1)+1.0*j/(i+j)*(dp[tmp][j-1]-1)); } tmp^=1; } printf("%0.6lf",dp[tmp^1][b]-0.0000005); return 0;}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366513.html

你可能感兴趣的文章
常用PY库
查看>>
排序 之 堆排序 归并排序
查看>>
linux查看修改线程默认栈空间大小(ulimit -s)
查看>>
BZOJ 1477 青蛙的约会 【扩展欧几里得】
查看>>
用phpexcelreader将excel文件读入到mysql中(转载)
查看>>
As3 Socket高低位
查看>>
15. 三数之和
查看>>
使用angular.js获取form表单中的信息
查看>>
TestNG
查看>>
高精——模板
查看>>
生成CFree 5.0 注册码
查看>>
磁力链接
查看>>
【问题解决方案】之 关于某江加密视频swf专用播放器仍无法播放的问题
查看>>
2014,码农梦想,先从态度开始!
查看>>
常用板子
查看>>
linux中安装eclipse--CnetOS6.5
查看>>
应用层拒绝服务攻击
查看>>
JavaScript学习总结(五)——jQuery插件开发与发布
查看>>
广度优先(迷宫找人)
查看>>
word2vec 评测 window_different
查看>>