F - 邱老师看电影

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

一天邱老师心血来潮想去看电影,但是邱老师的妹子想去逛街,他们谁也没有办法说服对方,于是准备来玩一个游戏来决定听谁的。

邱老师找来w只白鼠和b只黑鼠,邱老师和妹子轮流从袋子里面抓老鼠,谁先抓到白色老鼠谁就赢。

但是有酱神在旁边捣乱,邱老师每抓一只老鼠出来,酱神就偷偷的也从里面抓一只出来,这3个人抓出来的老鼠都是随机的。

如果袋子里没有白老鼠,且之前没有人拿到白老鼠的时候,邱老师胜。

为了体现绅士精神,邱老师让妹子先抓,那么妹子赢的概率是多少呐?

Input

只有两个数字 w和b w<=1000 b<=1000

Output

输出妹子赢的概率 保留9位小数

Sample input and output

Sample Input Sample Output
1 3
0.500000000

解题报告:

f(i,j,k) -> i只白鼠,j只黑鼠,目前操作者是k号时妹纸赢的概率

0,妹

1,邱

2,酱

边界条件:

if (i == 0 && j == 0 )

return ans = 0;

if (j == 0)

{

if (k == 0 && i >= 1)

return ans = 1.0;

else if(k == 1 && i >=1)

return ans = 0.;

else if (k == 2 && i >= 2 )

return ans = 1.0;

return ans = 0.0;

}

if (i == 0)

return ans = 0.;

转移:

int next = (k + 1 ) % 3; //下一个操作的人

if (k == 0) // 妹纸操作

{

f(i,j,K) =  ( i / (i+j) ) + dp(i,j-1, next) * (  j / (i+j) )

}

else if (k == 1) // 邱老师操作

{

f(i,j,k) = f(i,j-1,next) * (j / (i+j));

}

else // 酱老师操作

{

f(i,j,k) = f(i-1,j,next) * (i / (i+j) ) + f(i,j-1,next) * (j / (i+j))

}

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio> using namespace std;
const int maxn = 1e3 + ;
double f[maxn][maxn][];
bool arrive[maxn][maxn][]; double dp(int i,int j,int k)
{
if (arrive[i][j][k])
return f[i][j][k];
double & ans = f[i][j][k] = .;
arrive[i][j][k] = true;
if (i == && j == )
return ans = .;
if (j == )
{
if (k == && i >= )
return ans = 1.0;
else if(k == && i >=)
return ans = .;
else if (k == && i >= )
return ans = 1.0;
return ans = 0.0;
}
if (i == )
return ans = .;
int next = (k+) % ;
if (k == )
ans = (double)i / (double)(i+j) + dp(i,j-,next) * ((double)j/(double)(i+j));
else if (k == )
ans = dp(i,j-,next) * ((double)j/(i+j));
else
ans = dp(i-,j,next) * ( (double)i / (double)(i+j) ) + dp(i,j-,next) * ( (double)j / (double)(i+j) ) ;
return ans;
} int main(int argc,char *argv[])
{
int w,b;
memset(arrive,false,sizeof(arrive));
scanf("%d%d",&w,&b);
printf("%.9lf\n",dp(w,b,));
return ;
}

UESTC_邱老师看电影 2015 UESTC Training for Dynamic Programming<Problem F>的更多相关文章

  1. UESTC_邱老师选妹子 2015 UESTC Training for Dynamic Programming<Problem H>

    H - 邱老师选妹子 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  2. UESTC_邱老师玩游戏 2015 UESTC Training for Dynamic Programming<Problem G>

    G - 邱老师玩游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  3. UESTC_邱老师的脑残粉 2015 UESTC Training for Graph Theory<Problem D>

    D - 邱老师的脑残粉 Time Limit: 12000/4000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Sub ...

  4. UESTC_男神的约会 2015 UESTC Training for Dynamic Programming<Problem J>

    J - 男神的约会 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  5. UESTC_酱神的旅行 2015 UESTC Training for Dynamic Programming<Problem M>

    M - 酱神的旅行 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  6. UESTC_酱神赏花 2015 UESTC Training for Dynamic Programming<Problem C>

    C - 酱神赏花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 262143/262143KB (Java/Others) Submi ...

  7. UESTC_男神的礼物 2015 UESTC Training for Dynamic Programming<Problem A>

    A - 男神的礼物 Time Limit: 3000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  8. UESTC_邱老师选妹子(二) 2015 UESTC Training for Dynamic Programming<Problem I>

    I - 邱老师选妹子(二) Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  9. UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>

    B - 邱老师降临小行星 Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65536/65535KB (Java/Others) Su ...

随机推荐

  1. DELL WIN7系统安装 U盘

    1.老毛挑制作U盘启动安装  http://www.laomaotao.net/ 2.下载WIN7 COPY里面的内容到U盘根目录,然后将bootmgr文件更名为win7mgr 3.开进F2修改BIO ...

  2. 使用WCF实现SOA面向服务编程—— 架构设计

    原文地址:http://www.cnblogs.com/leslies2/archive/2011/03/29/1997889.html SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就 ...

  3. C++字符串指针与字符数组的区别

    今天发现这样一个问题 #include <iostream> using namespace std; int main() { ]; strcpy_s(ch1,");//编译通 ...

  4. spring框架源码编译

    程序猿小菜一枚,最近从github上面下载下来一份spring各个项目的源码一份,但是弄了很长时间,因为网速和(fanqiang)的速度,希望大家不要再为这种无谓的时间花费时间,简单来说github上 ...

  5. Activity的onSaveInstanceState()和onRestoreInstanceState()方法

    首先Android的Activity生命周期如下图: Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,他们不同于onC ...

  6. 恢复Linux下被误删除的文件(笔记)

    恢复Linux下被误删除的文件 [root@xuegod63 ~]# mount /dev/cdrom /mnt/ 分一个区:sda4  查找:extundelete 分一个区:sda4  [root ...

  7. java遍历泛型的方法

    一.List遍历 Java中List遍历有三种方法来遍历泛型,主要为: 1.for循环遍历 2.iterator遍历 3.foreach遍历 package com.gmail.lsgjzhuwei; ...

  8. 关闭SQL Server 数据库所有使用连接

    使用存储过程终止:在查询分析器下创建终止数据库所有接连的存储过程,通过调用该存储过程可以关闭所有使用该数据库的连接操作.--创建终止使用数据库下所有进程的存储过程,参数为数据库名称use  maste ...

  9. 一篇文章讲清楚android ImageView.ScaleType

    2016-01-10 刚开始android编程的时候, 关于ImageView.ScaleType网络上好多, 说实话没看懂. 本文就是为了讲清楚这个, 有用的话转走, 请注明原地址和作者. 典型的代 ...

  10. c_str()函数

    #include <string.h> const char *c_str(); 返回字符串地址,是一个c函数,返回类型const char*c_str()函数返回一个指向正规C字符串的指 ...