Codeforces Round #105 D. Bag of mice 機率dp,

來源:互聯網
上載者:User

Codeforces Round #105 D. Bag of mice 機率dp,

http://codeforces.com/contest/148/problem/D

題目意思是龍和公主輪流從袋子裡抽老鼠,袋子裡有白老師 W 只,黑老師 D 只,公主先抽,第一個抽出白老鼠的勝利,龍每次抽的時候會隨機跑出一隻老鼠。給出W和D要你求出公主勝利的機率。

對於dp[w][d]表示有w只白老鼠d只黑老鼠的情況下公主勝利的機率,如果公主第一次就抽出白鼠,機率是 w/(w+d) ,而如果公主沒有抽到白鼠,要讓公主勝利,龍也不能抽到白鼠,則是 rec = d/(w+d) * (d-1)/(w+d-1) 。這是跑出來的老鼠可能是白的也可能是黑的。如果是白鼠,則剩下w-1隻白鼠d-2隻黑鼠,然後再公主先手,機率是rec * w/(w+d-2) * dp[w-1][d-2]。 如果是黑鼠,則剩下w只白鼠d-3隻黑鼠,同樣公主先手,機率是rec * (d-2)/(w+d-2) * dp[w][d-3];

 

最終得dp轉移方程:

dp[i][j] = i / (i+j) + rec * (i / (i+j-2) * dp[i-1][j-2] + (j-2) / (i + j - 2) * dp[i][j-3]);

rec = j / (i + j)  * (j - 1) / (i + j - 1);


/*********************************************** ** problem ID    : cf_#105D.cpp ** create time    : Wed Jul 22 20:22:24 2015 ** auther name    : xuelanghu ** auther blog    : blog.csdn.net/xuelanghu407 **********************************************/#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n, m;double dp[1010][1010];int main () {        cin >> n >> m;        for (int i=0; i<=n; i++) {        dp[i][0] = 1.0;    }    for (int i=0; i<=m; i++) {        dp[0][i] = 0.0;    }        for (int i=1; i<=n; i++) {        dp[i][1] = (double)i / (i+1);        for (int j=2; j<=m; j++) {            dp[i][j] = (double)i / (i+j);            double tmp = (double)j* (double)(j-1)  / (i+j) / (i+j-1);            if (j>2) dp[i][j] += tmp * (double)(j-2) / (i+j-2) * dp[i][j-3];              dp[i][j] += tmp * (double)i / (i+j-2) * dp[i-1][j-2];        }    }        printf("%.10lf\n", dp[n][m]);        return 0;}code


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.