1. 题意:
  1. 原来袋子里有w仅仅白鼠和b仅仅黑鼠
  1. 龙和王妃轮流从袋子里抓老鼠。

    谁先抓到白色老师谁就赢。

  1. 王妃每次抓一仅仅老鼠,龙每次抓完一仅仅老鼠之后会有一仅仅老鼠跑出来。

  1. 每次抓老鼠和跑出来的老鼠都是随机的。

  1. 假设两个人都没有抓到白色老鼠则龙赢。王妃先抓。
  1. 问王妃赢的概率。


第一次写的时候还是出问题了,还是对概率DP理解有问题:

当前状态满足条件的概率=segma(转移到状态si的概率pi * 状态i满足条件的概率)
但是一定要枚举出来全部可能转移的状态,并且仅仅考虑一步。就是说考虑一个游戏回合之后的状态就可以,不考虑2个回合,3个回合......

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <iostream>
#include <iomanip>
#include <cmath>
#include <map>
#include <set>
#include <queue>
using namespace std; #define ls(rt) rt*2
#define rs(rt) rt*2+1
#define ll long long
#define ull unsigned long long
#define rep(i,s,e) for(int i=s;i<e;i++)
#define repe(i,s,e) for(int i=s;i<=e;i++)
#define CL(a,b) memset(a,b,sizeof(a))
#define IN(s) freopen(s,"r",stdin)
#define OUT(s) freopen(s,"w",stdout)
const ll ll_INF = ((ull)(-1))>>1;
const double EPS = 1e-8;
const int INF = 100000000; const int MAXN = 1000+100;
double dp[MAXN][MAXN]; int main()
{
int w,b;
while(~scanf("%d%d",&w,&b))
{
CL(dp,0);
for(int i=1;i<=w;i++)dp[i][0]=1.0;
for(int i=1;i<=b;i++)dp[0][i]=0.0;
for(int i=1;i<=w;i++)
for(int j=1;j<=b;j++)
{
dp[i][j]=1.0*i/(i+j);
if(j>=3)dp[i][j]+=1.0*j*(j-1)*(j-2)/(1.0*(i+j)*(i+j-1)*(i+j-2))*dp[i][j-3];
if(i>=1 && j>=2)dp[i][j]+=1.0*i*j*(j-1)/(1.0*(i+j)*(i+j-1)*(i+j-2))*dp[i-1][j-2];
}
printf("%.9lf\n",dp[w][b]);
}
return 0;
}

题意的汉语翻译来自:http://blog.csdn.net/xingyeyongheng/article/details/25545219

codeforces 148D 概率DP的更多相关文章

  1. Codeforces 28C [概率DP]

    /* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...

  2. cf 148D 概率DP

    题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老师谁就赢.王妃每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来.每次抓老鼠和跑出来的老鼠都是随机的.如果两个人都没 ...

  3. codeforces 540D 概率dp

    传送门 大概可以这样理解, 一开始有r个石头, p个布, s个剪刀, 每一天有其中的两个相遇, 如果两个是相同的种类, 什么都不会发生, 否则的话有一个会挂掉, 问最后每一种生存的概率. dp[i][ ...

  4. CodeForces 398B 概率DP 记忆化搜索

    题目:http://codeforces.com/contest/398/problem/B 有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了 ...

  5. Codeforces 931 概率DP

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  6. Codeforces - 518D 概率DP初步

    #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #i ...

  7. caioj1272&&codeforces 148D: 概率期望值3:抓老鼠

    这道真的是好题,不卡精度,不卡细节,但是思考的方式很巧妙! 一开始大家跟我想的应该差不多,用f[i][j]表示有i只白老鼠,j只黑老鼠的胜率,然后跑DP,然后我就发现,这样怎么做?还有一种不胜不负的平 ...

  8. Vasya and Magic Matrix CodeForces - 1042E (概率dp)

    大意:给定n*m矩阵, 初始位置(r,c), 每一步随机移动到权值小于当前点的位置, 得分为移动距离的平方, 求得分期望. 直接暴力dp的话复杂度是O(n^4), 把距离平方拆开化简一下, 可以O(n ...

  9. Broken robot CodeForces - 24D (概率DP)

    You received as a gift a very clever robot walking on a rectangular board. Unfortunately, you unders ...

随机推荐

  1. uvalive 3971 - Assemble(二分搜索 + 贪心)

    题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量,  现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...

  2. Treasure Exploration(二分最大匹配+floyd)

    Treasure Exploration Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 7455   Accepted: 3 ...

  3. NAT简单介绍

    NAT本质就是让一群机器公用同一个IP.还有一个重要的用途是保护NAT内的主机不受外界攻击 NAT类型: 1.Full Cone:IPport不受限 Full Cone仅仅做单纯的地址转换,不正确进出 ...

  4. Centos6.4下tar包安装最新版Mysql5.6

    1.下载 mysql:http://www.mysql.com/downloads/ (须要注冊ORACLE账号) 版本号:mysql-advanced-5.6.21-linux-glibc2.5-x ...

  5. [原]详解如何将cocos2dx项目编译到Android平台上的(方式一:Cywin+NDK)

    链接地址:http://m.blog.csdn.net/blog/yhc13429826359/29357815 2014-6-8阅读578 评论0 前言:cocos2dx作为一个开源的移动2D游戏框 ...

  6. [POJ 1521]--Entropy(哈夫曼树)

    题目链接:http://poj.org/problem?id=1521 Entropy Time Limit: 1000MS    Memory Limit: 10000K Description A ...

  7. 几个BCB例子

    http://blog.163.com/tab_98/blog/static/11924097201511274543737/

  8. 基于visual Studio2013解决C语言竞赛题之0509杨辉三角

     题目

  9. LDAP研究

    一.ldap介绍 ldap是轻量级的文件夹訪问协议.重点是文件夹訪问协议.更为重点的是协议.好吧他是一个协议.也就是一个标准. 那么实现这款协议的软件当中有一款就是openldap. 二.安装wind ...

  10. cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: 解决办法

    问题原因:很可能是/var/log的权限设置不正确.首先执行 mkpasswd 和 mkgroup 重新生成权限信息,再删除sshd服务,重新配置 解决办法: $ mkpasswd -l > / ...