【codeforces148D】Bag of mice(记忆化+概率)

来源:互联网 发布:deform11软件下载 编辑:程序博客网 时间:2024/06/03 23:41

题目:

我是超链接

题意:

袋子里有w只白鼠和b只黑鼠, 龙和公主轮流从袋子里抓老鼠。谁先抓到白色老师谁就赢. 公主每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来.每次抓老鼠和跑出来的老鼠都是随机的。如果两个人都没有抓到白色老鼠则龙赢。公主先抓.问公主赢的概率。

题解:

其实就是个模拟,运用记忆化比较简单

代码:

#include <cstdio>using namespace std;bool vis[1005][1005];double dp[1005][1005];double dfs(int w,int b){if (w<=0) return 0;if (b<=0) return 1;if (vis[w][b]) return dp[w][b];vis[w][b]=1;dp[w][b]=w*1.0/(w+b);if (b>=2){double hh=b*1.0/(w+b)*(b-1)*1.0/(w+b-1);dp[w][b]+=hh*(w*1.0/(w+b-2)*dfs(w-1,b-2)+(b-2)*1.0/(w+b-2)*dfs(w,b-3));}return dp[w][b];}int main(){int w,b;scanf("%d%d",&w,&b);printf("%.9lf",dfs(w,b));}


原创粉丝点击