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. 1 3
  1. 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))

}

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7. const int maxn = 1e3 + ;
  8. double f[maxn][maxn][];
  9. bool arrive[maxn][maxn][];
  10.  
  11. double dp(int i,int j,int k)
  12. {
  13. if (arrive[i][j][k])
  14. return f[i][j][k];
  15. double & ans = f[i][j][k] = .;
  16. arrive[i][j][k] = true;
  17. if (i == && j == )
  18. return ans = .;
  19. if (j == )
  20. {
  21. if (k == && i >= )
  22. return ans = 1.0;
  23. else if(k == && i >=)
  24. return ans = .;
  25. else if (k == && i >= )
  26. return ans = 1.0;
  27. return ans = 0.0;
  28. }
  29. if (i == )
  30. return ans = .;
  31. int next = (k+) % ;
  32. if (k == )
  33. ans = (double)i / (double)(i+j) + dp(i,j-,next) * ((double)j/(double)(i+j));
  34. else if (k == )
  35. ans = dp(i,j-,next) * ((double)j/(i+j));
  36. else
  37. ans = dp(i-,j,next) * ( (double)i / (double)(i+j) ) + dp(i,j-,next) * ( (double)j / (double)(i+j) ) ;
  38. return ans;
  39. }
  40.  
  41. int main(int argc,char *argv[])
  42. {
  43. int w,b;
  44. memset(arrive,false,sizeof(arrive));
  45. scanf("%d%d",&w,&b);
  46. printf("%.9lf\n",dp(w,b,));
  47. return ;
  48. }

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. 通过jstack定位在线运行java系统故障_案例1

    问题描述: 在一个在线运行的java web系统中,会定时运行一个FTP上传的任务,结果有一天发现,文件正常生成后却没有上传. 问题初步分析: 1.查看日志文件 发现这个任务只打印了开始进入FTP处理 ...

  2. 图片延迟加载scrollLoading.js应用

     <ul>                     <li><a href="http://news.qq.com/" target="_b ...

  3. 【POJ1581】A Contesting Decision(简单模拟)

    没有什么弯路,直接模拟即可.水题. #include <iostream> #include <cstring> #include <cstdlib> #inclu ...

  4. 04747_Java语言程序设计(一)_第9章_输入和输出流

    例9.1一个文件复制应用程序,将某个文件的内容全部复制到另一个文件. import java.io.*; public class Example9_1 { public static void ma ...

  5. ios 以NSObject为父类的各类间继承关系

  6. 安卓Menu键的问题

    近期开发中有须要Menu键,结果发现了一个非常尴尬的问题.我的測试机上有Menu键.可是測试平板上没有,队友的測试机上竟然也没有Menu键.这着实有些尴尬... 上网谷歌之后才发现问题所在: 仅仅有在 ...

  7. nodejs 批处理运行 app.js

    1.直接执行run.bat文件         以下的内容为批处理文件run.bat中的内容,批处理命令中NODE_PATH为Node.js的安装路径. 使用express 生成的项目.app.js为 ...

  8. 16. Linux 文件目录权限

    # 文件参数 d:表示是一个目录-:表示这是一个普通的文件l: 表示这是一个符号链接文件,实际上它指向另一个文件b.c:分别表示区块设备和其他的外围设备,是特殊类型的文件s.p:这些文件关系到系统的数 ...

  9. JQuery hover(over,out) 使用笔记

    转载自:http://www.douban.com/note/202404884/ JQuery hover(over,out) 使用笔记 JavaScript 下.onmouseover() 和 o ...

  10. Window.open 实现导航与打开窗口,导航到一个特定链接地址,也可以打开一个新的浏览器窗体

    语法 window.open(strUrl,strWindowName,strWindowFeatures ,replace) strUrl: 打开资源的地址 strWindowName: 表示窗体名 ...