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 ...
随机推荐
- DbVisualizer9.0.6破解版下载、破解方法以及补丁
DbVisualizer破解方法如下:第一步:把下载的dbvis.puk文件,替换掉安装目录“D:\Program Files\DbVisualizer-6.0.12\lib”下dbvis.jar里面 ...
- TCP/IP详解 卷一(第七、八章 Ping、Traceroute程序)
Ping程序 Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达. 该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答. ping程序还能测出到这台主机的往返时 ...
- 【Python】继承
子类的方法__init__() 创建子类的实例时,Python首先需要完成的任务是给父类所有属性赋值,为此,子类的方法__init__()需要父类施以援手. class Car(): '''模拟汽车' ...
- Oracle 查询一个表的所有字段
select * from user_tab_columns where table_name = 'T_B_CLIENT_MSG'
- OJ刷题---ASCII码排序
题目要求: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluaGFpeXVuX3l0ZHg=/font/5a6L5L2T/fontsize/400/f ...
- VueJS自定义全局和局部指令
除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 使用directive自定义全局指令 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面 ...
- 邮箱大师WPZ协议包
WIRELESS Z PACKET: i8-version(WZPUnit.getVersion() & 3 | WZPUnit.MAGIC_MASK = 1 & 3 | -48 = ...
- Away3D引擎学习笔记(一)资源加载解析块
前文:Away3D断断续续用了一段时间了,三维相关的很多算法,计算转换还是有点绕,整理些自己觉得还有点意思东西,希望大家有用. 三维开始,Away3D构架你场景那几行代码各处都有,这里就不copy了, ...
- matlab2016b-linux版本在ubutu16.04x64上面不能打开摄像头的处理方法
this can not work. need find other way. ================================================== ...
- 畅通project再续 HDU杭电1875 【Kruscal算法 || Prim】
Problem Description 相信大家都听说一个"百岛湖"的地方吧.百岛湖的居民生活在不同的小岛中.当他们想去其它的小岛时都要通过划小船来实现.如今政府决定大力发展百岛湖 ...