TopCoder SRM420 Div1 RedIsGood —— 期望
题目链接:https://vjudge.net/problem/TopCoder-9915
(论文上的题)

题解:


更正:
, i>0, j>0
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <set>
using namespace std;
typedef long long LL;
const double EPS = 1e-;
const int INF = 2e9;
const LL LNF = 9e18;
const int MOD = 1e5;
const int MAXN = 1e3+; // 记忆化搜索
double dp[MAXN][MAXN];
bool vis[MAXN][MAXN];
double dfs(int r, int b)
{
if(r==) return ; //当没有红牌剩余时,停止翻牌,则期望为0
if(b==) return r; //当没有黑牌剩余时,将剩余的红牌全部翻完,则期望为r
/* if(r<=b) return 0;
本来认为如果红小于黑时,就停止翻牌,期望为0.但是当r<=b时,期望仍有可能大于0,
因为允许在任意时刻停止翻牌,即在前景对自己不利的时候停止。
比如1 1,EX = 0.5*1 + 0.5*(-1+1.0*1) = 0.5。 第一部分:当翻完红牌时,
前景,即期望是对自己不利的,因而马上停止。
*/
if(vis[r][b]) return dp[r][b];
vis[r][b] = true;
return dp[r][b] = max(0.0, 1.0*r/(r+b)*(dfs(r-,b)+) + 1.0*b/(r+b)*(dfs(r,b-)-));
} int main()
{
int R, B;
while(scanf("%d%d", &R, &B)!=EOF)
{
memset(vis, false, sizeof(vis));
printf("%.3lf\n", dfs(R,B));
}
} /* 递推
double dp[MAXN][MAXN];
int main()
{
int R, B;
while(scanf("%d%d", &R, &B)!=EOF)
{
for(int i = 0; i<=B; i++) //当没有红牌剩余时,停止翻牌,即期望为0
dp[0][i] = 0;
for(int i = 1; i<=R; i++)
{
dp[i][0] = i;
for(int j = 1; j<=B; j++) //如果剩余的期望小于0,就不再翻牌了。
dp[i][j] = max(0.0, 1.0*i/(i+j)*(dp[i-1][j]+1) + 1.0*j/(i+j)*(dp[i][j-1]-1));
}
printf("%.3lf\n", dfs(R,B));
}
}
*/ /* 滚动数组
double dp[MAXN];
int main()
{
int R, B;
while(scanf("%d%d", &R, &B)!=EOF)
{
for(int i = 0; i<=B; i++)
dp[i] = 0;
for(int i = 1; i<=R; i++)
{
dp[0] = i;
for(int j = 1; j<=B; j++)
dp[j] = max(0.0, 1.0*i/(i+j)*(dp[j]+1) + 1.0*j/(i+j)*(dp[j-1]-1));
}
printf("%.3lf\n", dp[B]);
}
}
*/ /*
int R, B;
double dp[MAXN][MAXN]; //另一种dp[i][j]的定义:当前翻了i张红,j张黑,剩余的期望为多少。
bool vis[MAXN][MAXN];
double dfs(int r, int b)
{
if(r==R) return 0;
if(b==B) return R-r;
if(vis[r][b]) return dp[r][b];
vis[r][b] = true;
return dp[r][b] = max(0.0, 1.0*(R-r)/(R+B-r-b)*(dfs(r+1,b)+1) + 1.0*(B-b)/(R+B-r-b)*(dfs(r,b+1)-1));
} int main()
{
while(scanf("%d%d", &R, &B)!=EOF)
{
memset(vis, false, sizeof(vis));
printf("%.3lf\n", dfs(0,0));
}
}
*/
TopCoder SRM420 Div1 RedIsGood —— 期望的更多相关文章
- TopCoder SRM420 Div1 500pt RedIsGood
桌面上有R 张红牌和B 张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1 美元,黑牌则付出1 美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. R,B ≤ 100000. 输 ...
- TopCoder 649 div1 & div2
最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实 ...
- TopCoder SRM500 Div1 250 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-250.html SRM500 Div1 250 题意 (看题用了半个小时--) 有 n 个人(编号 ...
- topcoder SRM642 div1 hard WheelofFortune
题目链接:vjudge 大意:有两个人参加一场游戏,这个游戏在一个编号为\(0\text~n-1\)的轮盘上进行,一开始轮盘上的数字均为0:一共有\(m\)轮,每一轮都有一个操作参数\(s_i\),主 ...
- TopCoder SRM500 Div1 500 分治
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-500.html SRM500 Div1 500 没想到 double 的精度居然没有爆-- 考虑以 ...
- TopCoder SRM500 Div1 1000 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-1000.html SRM500 Div1 1000 设 \(v_1,v_2,\cdots ,v_9 ...
- TopCoder SRM502 Div1 500 贪心 01背包
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-500.html SRM502 Div1 500 好题. 首先,如果已经确定了解决所有问题的优先级, ...
- TopCoder SRM502 Div1 1000 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-1000.html SRM502 Div1 1000 题意 从 [0,n-1] 中选择 k 个不同的 ...
- topcoder SRM712 Div1 LR
题目: Problem Statement We have a cyclic array A of length n. For each valid i, element i-1 the l ...
随机推荐
- HttpWebRequest.Proxy属性
HttpWebRequest.Proxy默认使用IE代理,可以设置“Internet选项-Internet属性-连接-局域网设置-代理服务器”.
- .net发布网站步骤
本文章分为三个部分: web网站发布.IIS6 安装方法.ASP.NET v4.0 安装方法 一.web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重 ...
- shell函数传递带空格的参数
shell中的参数以空格为分割符,经常会碰到需要传递带空格的参数,例如传递带空格的文件名. 方法很简单:给参数加双引号. 但是实际效果要看你的函数内容,一种可能的情况是: 其实你真的传递进去了带空格的 ...
- hdu 4862 KM算法 最小K路径覆盖的模型
http://acm.hdu.edu.cn/showproblem.php?pid=4862 选t<=k次,t条路要经过全部的点一次而且只一次. 建图是问题: 我自己最初就把n*m 个点分别放入 ...
- MySQL-[Err] 1055 - Expression #1
© 版权声明:本文为博主原创文章,转载请注明出处 问题描述:在MySQL数据库下,执行SQL插入语句报错.错误信息如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL ...
- Android Handler 异步消息处理机制的妙用 创建强大的图片载入类
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...
- 软件工程第3次作业——Visual Studio 2017下针对代码覆盖率的C/C++单元测试
本项目Github地址(同时包括两个作业项目): Assignment03 -- https://github.com/Oberon-Zheng/SoftwareEngineeringAssignme ...
- JSP——Web应用
1.EL表达式 2.jstl fmt功能说明 3.jsp 自定义标签 4.QR码————二维码等条码
- Nginx 经验小结
chmod 777 永远不要 使用 777,有时候可以懒惰的解决权限问题, 但是它同样也表示你没有线索去解决权限问题,你只是在碰运气. 你应该检查整个路径的权限,并思考发生了什么事情. 把 root ...
- jquery实现重置
$('#reset').click(function(){ $('#info_frm')[0].reset(); });