题目大意:

一个包裹里有蓝色和红色的弹珠,在这个包裹里有奇数个弹珠,你先走, 你先从背包里随机的拿走一个弹珠,拿走每个弹珠的可能性是一样的。然后Jim从背包里拿走一个蓝色的弹珠,如果没有蓝色的弹珠让Jim拿走,那么Jim赢,如果最终从包裹里移走的是蓝的弹珠,那么你赢,否则Jim赢。给你蓝色和红的背包的里弹珠的个数,求赢的概率。
 
dp[R][B] 代表 R个红球, B个白球的时候赢得概率。当遇到 (R+B)%2 == 0 得时候直接 dp[R][B] = dp[R][B-1]就OK了。
这里采用的是记忆化搜索,所以用起来比较方便。
 
 
 ==============================================================================================================
 
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL;
const int INF = 1e9+;
const int MAXN = ;
double dp[MAXN][MAXN]; double DFS(int R,int B)
{
if(dp[R][B] != -)
return dp[R][B];
if(R >= B || B == )
return dp[R][B] = ;
if(R == )
return dp[R][B] = ;
double k = 1.0/(R + B);
if( (R+B)% )
dp[R][B] = 1.0*R*k*DFS(R-,B) + 1.0*B*k*DFS(R, B-);
else
dp[R][B] = DFS(R, B-); return dp[R][B];
} int main()
{
int T, cas = , n, R, B;
for(int i=; i<=; i++)
for(int j=; j<=; j++)
dp[i][j] = dp[i][j] = -; scanf("%d", &T);
while(T --)
{
scanf("%d %d", &R, &B); printf("Case %d: %.9lf\n",cas ++, DFS(R, B) );
} return ;
}

最新文章

  1. [JavaEE笔记]Cookie
  2. jquery attr()方法
  3. Python打包成exe:屡试不爽的cxfreeze!
  4. java servlet+mysql全过程(原创)
  5. Reflector 已经out了,试试ILSpy[转]
  6. 看2016上半年O2O新风向,太阳终会穿破乌云
  7. JavaScript 语句 for
  8. At_speed_test
  9. 解决 nginx 返回数据不完整的方法
  10. PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
  11. Ext.MessageBox.Show使用Progress
  12. javascript深入理解js闭包(个人理解,大神勿喷)
  13. python--DenyHttp项目(1)--GUI:tkinter☞ module &#39;tkinter&#39; has no attribute &#39;messagebox&#39;
  14. 鸟哥的linux私房菜学习-(五)补充:重点回顾
  15. Spring基础知识备案
  16. [USACO07NOV] Milking Time
  17. python之线程同步
  18. poj3276 Face The Right Way(反转问题,好题)
  19. 1.7Oob 构造方法
  20. VMware进入BIOS

热门文章

  1. http://bbs.phpcms.cn/thread-266337-1-1.html
  2. HttpWebRequest结合HtmlAgilityPack实现网页form提交
  3. Nico Game Studio 1.基本UI和地图编辑基础功能
  4. asp.net之动态页面和静态页面的区别
  5. [序列化] SerializeHelper--序列化操作帮助类 (转载)
  6. c语言学习之基础知识点介绍(九):预处理指令和多文件开发
  7. 如何获得Windows 8中已记住的WIFI的明文密码
  8. Linux Shell编程学习笔记——目录(附笔记资源下载)
  9. View.setTag()的作用
  10. 国内国外最好的java开发论坛及站点 [转]