CoderForce 148D-Bag of mice (概率DP求概率)
2016-02-03 22:01
295 查看
题目大意:美女与野兽在玩画鸽子的游戏。鸽子在用黑布遮住的笼子里,白色的有w只,黑色的有b只,每次拿出一只作画,谁先画到白色的鸽子谁就赢。美女首先画,因为野兽太丑,它每次画的时候都会吓跑一只鸽子,所有出笼子的鸽子都不在进去。求美女赢得概率。(设定假如没有人画到白色鸽子,算野兽赢)。
题目分析:这道题不难,很显然的概率DP。这是我第一次写概率DP,纪念一下。。。
代码如下:
题目分析:这道题不难,很显然的概率DP。这是我第一次写概率DP,纪念一下。。。
代码如下:
# include<iostream> # include<cstdio> # include<vector> # include<list> # include<queue> # include<cstring> # include<set> # include<map> # include<string> # include<cmath> # include<algorithm> using namespace std; double dp[1005][1005]; double DP(int w,int b) { if(dp[w][b]!=-1.0) return dp[w][b]; if(w<=0) return dp[w][b]=0.0; if(b<=0) return dp[w][b]=1.0; double res1=(double)w/(double)(w+b); double res2=((double)b/(double)(w+b))*((double)(b-1)/(double)(w+b-1)); double t=0.0; if(b-2>0) t+=((double)(b-2)/(double)(w+b-2))*DP(w,b-3); if(w-1>0) t+=((double)(w)/(double)(w+b-2))*DP(w-1,b-2); res2*=t; return dp[w][b]=res1+res2; } int main() { int w,b; while(~scanf("%d%d",&w,&b)) { for(int i=0;i<=w;++i) for(int j=0;j<=b;++j) dp[i][j]=-1.0; printf("%.9lf\n",DP(w,b)); } return 0; }
相关文章推荐
- C++自学随笔
- Android Studio 安装genymotion 和VCS
- Django开发问题~持续收集
- Android 5.0五大安全特性
- For test Code highlight
- JDBC性能优化
- 安装debian系统的配置问题
- 第一章 java环境的配置
- 在Linux笔记本上执行这句命令就能导致设备永久变砖
- 说在前面····
- POJ 2031 Building a Space Station(MST)
- unix mkdir命令的使用方法
- Java多线程用法解析
- lighttpd-1.4.39 : array
- swift菜鸟入门视频教程-07-闭包
- 错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
- Windows Services的1053错误的解决办法之一:修改注册表允许的响应时间
- 理解ros服务和参数 ---- 7
- hdu 2099 整除的尾数
- android 如何预置APK到 data 和system/app目录