zoukankan      html  css  js  c++  java
  • CF 148D Bag of mice 题解

    题面

    这是我做的第一道概率DP题;

    做完后发现没有后效性的DP是真的水;

    在这里说主要是再捋顺一下思路;

    设f[i][j]表示有i只白鼠,j只黑鼠是获胜的概率;

    显然:f[i][0]=1;

    然后分四种情况:

    1.先手刚好拿到白鼠:概率是i/(i+j);

    2.先手拿到黑鼠,后手拿到了白鼠:概率为0;

    3.先手拿到了黑鼠,后手拿到了也黑鼠,并且跑的是白鼠:概率是::dp[i][j]=j/(i+j)∗(j−1)/(i+j−1)∗i/(i+j−2)∗dp[i−1][j−2];

    4.先手拿到了黑鼠,后手拿到了也黑鼠,并且跑的是黑鼠:概率是:dp[i][j]=j/(i+j)∗(j−1)/(i+j+1)∗(j−2)/(i+j−2)∗dp[i][j−3];

    然后就可以AC掉了;

    #include <bits/stdc++.h>
    using namespace std;
    double f[1010][1010];
    int main()
    {
    	int w,b;
    	scanf("%d%d",&w,&b);
    	for(register int i=1;i<=w;i++){
    		f[i][0]=1;
    		for(register int j=1;j<=b;j++){			
    			f[i][j]=(double)i/(double)(i+j);
    		}
    	}
    	for(register int i=1;i<=w;i++){
    		for(register int j=1;j<=b;j++){
    			if(j>=2) f[i][j]=f[i][j]+(double)(f[i-1][j-2]*1.0000*j*(j-1)*i/(i+j)/(j+i-1)/(i+j-2));
    			if(j>=3) f[i][j]=f[i][j]+(double)(f[i][j-3]*1.0000*j*(j-1)*(j-2)/(i+j)/(i+j-1)/(i+j-2));
    		}
    	}
    	printf("%.9lf",f[w][b]);
    }
    
  • 相关阅读:
    16.ajax_case08
    16.ajax_case07
    16.ajax_case06
    16.ajax_case05
    9.2 sun.py
    9.1 mongo_python.py
    pandas-如何得到某一个值所在的行
    [已解决]ValueError: row index was 65536, not allowed by .xls format
    [已解决]python FileNotFoundError: [WinError 3] for getsize(filepath)
    Tomcat6连接数设置:permsize
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11612831.html
Copyright © 2011-2022 走看看