zoukankan      html  css  js  c++  java
  • CF148D Bag of mice

    (f(i,j))表示(i)只白鼠,(j)只黑鼠(A)先手胜的概率

    全白先手必胜,有一只黑鼠时,先手若抽到黑鼠则后手必胜,所以先手首回合必抽到白鼠

    (large f(i,0)=1,f(i,1)=frac i{i+1})

    先手抽白鼠,胜(largefrac i{i+j}),先手抽黑鼠,后手白鼠(0)

    先手抽黑鼠,后手抽黑鼠,跑一只白鼠

    [frac i{i+j} imes{frac{j-1}{i+j-1}} imesfrac i{i+j-2} imes f(i-1,j-2)\ ]

    先手抽黑鼠,后手抽黑鼠,跑黑鼠

    [frac i{i+j} imesfrac{j-1}{i+j-1} imesfrac{j-2}{i+j-2} imes f(i,j-3) ]

    最后

    [f(i,j)=frac i{i+j}+frac i{i+j} imes{frac{j-1}{i+j-1}} imesfrac i{i+j-2} imes f(i-1,j-2)+frac i{i+j} imesfrac{j-1}{i+j-1} imesfrac{j-2}{i+j-2} imes f(i,j-3) ]

    (O(wb))

    double f[N][N]; int n,m;
    int main(){
    	scanf("%d%d",&n,&m);
    	for(int i = 1;i <= n;++i){
    		f[i][0] = 1.0;
    		f[i][1] = 1.0*i/(i+1);
    	}
    	if(m == 1 || !m) { printf("%.15f",f[n][m]); return 0; } 
    	for(int i = 1;i <= n;++i)
    		for(int j = 2;j <= m;++j){
    			f[i][j] = (1.0*i)/(j+i) + (1.0*j)/(j+i) * (1.0*j-1)/(j+i-1) * (1.0*i)/(j+i-2) * f[i-1][j-2];
                if(j^2) f[i][j] += (1.0*j)/(j+i) * (1.0*j-1)/(j+i-1) * (1.0*j-2)/(j+i-2) * f[i][j-3];
    	}
    	printf("%.15f",f[n][m]);
    }
    
  • 相关阅读:
    洛谷3163 CQOI2014危桥 (最大流)
    UVA557 汉堡 Burger
    洛谷1950 长方形 (单调栈)
    洛谷3317 SDOI2014重建(高斯消元+期望)
    洛谷4035 JSOI2008球形空间产生器 (列柿子+高斯消元)
    test1
    test
    background
    bzoj1075
    bzoj1074
  • 原文地址:https://www.cnblogs.com/shikeyu/p/13825458.html
Copyright © 2011-2022 走看看