码迷,mamicode.com
首页 > 其他好文 > 详细

Topcoder SRM 488 Div1 250(概率dp)

时间:2015-08-18 01:19:00      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:概率dp

题意:有n个有聊人和m个无聊人,每次等概率任选两个人,让他们都变成无聊人,求所有人都变成无聊人的期望次数。(1n,m47)。

解法:设f(i)表示存在 i 个有聊人,将所有人都变成无聊人的期望次数。显然f(0) = 0,即不需要改变。方程:f(i)=f(i?2)×C2iC2n+m+f(i?1)×i×(n+m?i)C2n+m+f(i)×C2n+m?iC2n+m+1.
答案即为f(m)

代码

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
class TheBoredomDivOne{
public:
    double f[100];
    double c(double x){
        return x * (x - 1) / 2;
    }
    double find(int n, int m){
        memset(f, 0, sizeof(f));
        f[0] = 0;
        for(int i = 1; i <= m; i++)
        {
            f[i] = (f[i-2] * c(i) + f[i-1] * i * (n + m - i) + c(n + m)) / (c(n + m) - c(n + m - i));
        }
        return f[m];
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

Topcoder SRM 488 Div1 250(概率dp)

标签:概率dp

原文地址:http://blog.csdn.net/uestc_peterpan/article/details/47736781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!