描述

桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。

输入

一行输入两个数R,B,其值在0到5000之间

输出

在最优策略下平均能得到多少钱。

样例输入

5 1

样例输出

4.166666

提示

输出答案时,小数点后第六位后的全部去掉,不要四舍五入.

标签

bzoj1419


期望简单题。

令f[i][j]" role="presentation" style="position: relative;">f[i][j]f[i][j]表示还剩了i张红牌和j张黑牌时最优期望得到钱数。

那么发现:

f[i][j]=(f[i−1][j]+1)∗i/(i+j)+(f[i][j−1]+1)∗j/(i+j)" role="presentation" style="position: relative;">f[i][j]=(f[i−1][j]+1)∗i/(i+j)+(f[i][j−1]+1)∗j/(i+j)f[i][j]=(f[i−1][j]+1)∗i/(i+j)+(f[i][j−1]+1)∗j/(i+j)

但是题目并不允许我们开二维数组。

然而这个状态转移方程只与上一层有关。

因此需要滚动数组优化空间。

我们用f[tmp^1][j]记录上一层状态,f[tmp][i]记录当前层状态。

则有:

f[tmp][j]=(f[tmp" role="presentation" style="position: relative;">f[tmp][j]=(f[tmpf[tmp][j]=(f[tmp^1][j]+1)∗i/(i+j)+(f[i][j−1]+1)∗j/(i+j)" role="presentation" style="position: relative;">][j]+1)∗i/(i+j)+(f[i][j−1]+1)∗j/(i+j)][j]+1)∗i/(i+j)+(f[i][j−1]+1)∗j/(i+j)。

还有就是注意答案的处理。

代码:

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

2018.08.31 bzoj1419 Red is good(期望dp)的更多相关文章

  1. 2018.08.31 bzoj1426 收集邮票(期望dp)

    描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以 ...

  2. 【BZOJ1419】 Red is good [期望DP]

    Red is good Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 桌面上有R张红牌和B张 ...

  3. 2018.09.27 codeforces1045D. Interstellar battle(期望dp)

    传送门 一道有意思的期望dp. 题意是给出一棵树,每个点最开始都有一个gg的概率,有m次修改,每次修改会把某个点gg的概率更换掉,让你求出每次修改之后整个树被分成的连通块的数量的期望(gg掉的点不算) ...

  4. 2018.09.09 UVa10529 - Dumb Bones(期望dp)

    传送门 期望dp好题. f[i]表示摆放i个的最小花费,于是f[i]可以从f[j]与f[i-j+1]转移过来了. 代码: #include<bits/stdc++.h> #define N ...

  5. 2018.09.01 hdu4405 Aeroplane chess (期望dp)

    传送门 期望dp简单题啊. 不过感觉题意不太对. 手过了一遍样例发现如果有捷径必须走. 这样的话就简单了啊. 设f[i]" role="presentation" sty ...

  6. 【BZOJ1419】Red is good 期望DP

    题目大意 桌面上有\(R\)张红牌和\(B\)张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到\(1\)美元,黑牌则付出\(1\)美元.可以随时停止翻牌,在最优策略下平均能得到多少钱 ...

  7. 2018.08.31 19:41 自学go语言

    有的人是从最基础的开始学,而我却是从最简单开始学,学着调试,学着编程,其实我也是编程小白,好多的不懂,我不明白很多都可以用云完成了,为什么还要继续自己编程,不明白,但是有需求吧,有需求是件好事情,说明 ...

  8. 2018.08.31 16:26 调试 Swift 和 Pycharm 与 github 之间的链接

    花了一段时间调试Swift和Pycharm的链接,网上查了一下有关信息,再加上自己的摸索,一会就掌握了.

  9. 2018.08.31 bzoj3566: [SHOI2014]概率充电器(概率dp+容斥原理)

    传送门 概率dp好题啊. 用f[i]" role="presentation" style="position: relative;">f[i] ...

随机推荐

  1. jquery ajax 赋值问题, 后面程序判断逻辑用

    添加async:false; 像 $.get() 等是没有async参数的, 所以需要用到如下 $.ajaxSetup({ async : false //这个意思是等这个ajax有了返回值后才会执行 ...

  2. JS、CSS以及img对DOMContentLoaded事件的影响

    最近在做性能有关的数据上报,发现了两个非常有意思的东西:Chrome开发者工具的Timeline分析面板,以及DOMContentLoaded事件.一个是强大的令人发指的性能分析工具,一个是重要的性能 ...

  3. 从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图

    从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图 作者:naaoveGI…    文章来源:naaoveGIS    点击数:2063    更 ...

  4. Producer-consumer problem in Python

    from: http://agiliq.com/blog/2013/10/producer-consumer-problem-in-python/ By : Akshar Raaj We will s ...

  5. 自动选择最佳特征进行分类-SVM (Halcon)

    HALCON12里的example,classify_pills_auto_select_features.hdev. 执行流程: 1.选取相关特征(本例选取color和region组的所有特征)(本 ...

  6. How to Pronounce OPPORTUNITY

    How to Pronounce OPPORTUNITY Share Tweet Share Take the opportunity to learn this word!  Learn how t ...

  7. 英语广播原声听力100篇MP3及听力原文

    =============7.6================ Passage 031- 人工智能对人类的利与弊From a personal assistant, to doing searche ...

  8. 编写一个带有main函数的类,调用上面的汽车类,实例化奔驰、大众、丰田等不同品牌和型号,模拟开车过程:启动、加速、转弯、刹车、息火,实时显示速度。

    //程序入口    public static void main(String[] args) {        // TODO Auto-generated method stub         ...

  9. js原生实现 无缝滚动图片

    <!-- 无缝滚动图片开始 --> <div id=demopic style="OVERFLOW: hidden; WIDTH: 100%; COLOR: #fff; H ...

  10. c#栈的习题2

    —.单项选择题1.栈和队列具有相同的(    ). A.抽象数据类型     B.逻辑结构     C.存储结构     D.运算2.栈是(). A.顺序存储的线性结构     B.链式存储的非线性结 ...