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. 【转】图文并茂 Ubuntu使用Thunderbird方法指南

    原文网址:http://os.51cto.com/art/201101/243445.htm Ubuntu 是一个启动速度超快.界面友好.安全性好的操作系统,它适用于桌面电脑.笔记本电脑.服务器以及上 ...

  2. 关于C++中覆盖,重载,隐藏的一点说明

    C++覆盖 重载 隐藏是三个经常容易混淆的概念 这里我们简单总结下: 1.重载的条件(编译时多态) a.同一个类中 b.函数名相同,参数不同(返回值不能作为重载的条件) c.与函数是否为虚函数无关 2 ...

  3. hdu 5656 CA Loves GCD(dp)

    题目的意思就是: n个数,求n个数所有子集的最大公约数之和. 第一种方法: 枚举子集,求每一种子集的gcd之和,n=1000,复杂度O(2^n). 谁去用? 所以只能优化! 题目中有很重要的一句话! ...

  4. hdu 5245 Joyful(期望的计算,好题)

    Problem Description Sakura has a very magical tool to paint walls. One day, kAc asked Sakura to pain ...

  5. iOS FMDB中的使用

    n使用事务 [queue inTransaction:^(FMDatabase *db, BOOL *rollback) { [db executeUpdate:@"INSERT INTO ...

  6. AngularJs登录

    AngularJs 登录的简单实现 多数AngularJs应用离不开登录操作,最近阅读了一篇关于AngularJs登录的博客,博客中实现的登录系统demo能够应用于多数小型AngularJs应用,实现 ...

  7. 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找

    千万别! 非常多人这样说,也包括我. Linux内核早就把HASH路由表去掉了.如今就仅仅剩下TRIE了,只是我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix ha ...

  8. 在Ubuntu上为Android系统编写Linux内核驱动程序

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6568411 在智能手机时代,每个品牌的手机都有 ...

  9. phonegap环境配置与基本操作

    一.开发环境配置: 1.工具环境安装: 安装java sdk 1.6以上版本号,Android Development Tools.ant,系统变量 Path后面加入 新增名稱 JAVA_HOME 值 ...

  10. Java内存区域和GC机制篇

    Java内存区域和GC机制一.目录 1.Java垃圾回收概括 2.Java内存区域 3.Java对象的访问方式 4.Java内存访问机制 5.Java GC 机制 6.Java垃圾收集器 二.Java ...