HDU 4089 Activation(概率DP)

原创 2012年03月24日 16:16:48
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

const int maxn=2000+3;
const double eps=10e-9;
double p[5];
double dp[maxn][maxn];
double ps[maxn];
double c[maxn];

int main ()
{
    int n, m, k;
    while (~scanf("%d%d%d", &n, &m, &k))
    {
        memset (dp, 0, sizeof(dp));
        for (int i=1; i<=4; ++i)
            scanf("%lf", p+i);
        if (fabs(p[3]+p[4])<eps)
        {
            puts("0.00000");
            continue;
        }
        dp[1][1]=p[4]/(p[3]+p[4]);
        p[2]=p[2]/(1-p[1]);
        p[3]=p[3]/(1-p[1]);
        p[4]=p[4]/(1-p[1]);

        ///dp[i][1]=p2*(p2*(p2(... (p2*d[i][1]+c[1])...)+c[i-2])+c[i-1])+p4
        ///        =p2^i*dp[i][1]+p2^(i-1)*c[1]+...p2*c[i-1]+c[i];
        ps[0]=1.0;
        for (int i=0; i<=n; ++i)
            ps[i+1]=ps[i]*p[2];
        c[1]=p[4];
        //printf("%lf  %lf\n", ps[1], ps[2]);
        for (int i=2; i<=n; ++i)
        {
            for (int j=2; j<=k; ++j)
                c[j]=p[3]*dp[i-1][j-1]+p[4];
            for (int j=k+1; j<=i; ++j)
                c[j]=p[3]*dp[i-1][j-1];

            dp[i][1]=p[4];
            for (int j=1; j<i; ++j)
                dp[i][1]+=ps[i-j]*c[j+1];
            dp[i][1]/=(1-ps[i]);

            for (int j=2; j<=i; ++j)
                dp[i][j]=p[2]*dp[i][j-1]+c[j];
//            for (int j=k+1; j<=i; ++j)
//                dp[i][j]=p2*dp[i][j-1]+c[j-1];
        }

//        for (int i=1; i<=n; ++i)
//        {
//            for (int j=1; j<=i; ++j)
//                printf("%lf ", dp[i][j]);
//            printf("\n");
//        }
        printf("%0.5lf\n", dp[n][m]);
    }
    return 0;
}

HDU 4089 Activation(概率DP好题)——2011 Asia Beijing Regional Contest

传送门ActivationTime Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To...

hdu4089 Activation 概率dp 2011北京区域赛

Activation Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...

概率dp-hdu-4089-Activation

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4089 题目意思: n个人排队尝试游戏,队首中有四种情况。 1、动作失败重新连,队列不变,概率为p1...

HDU 4089 Activation (概率dp 好题 + 难题)

HDU 4089 Activation (概率dp 好题 + 难题)

【HDU】 4089 Activation 概率DP

题目大意:Tomato要玩一个游戏,他需要排队,一开始这个队列共有N个人,而他在队列的第M个位置,每当有玩家尝试激活登陆游戏时, 会概率性触发四个事件。p1的概率注册失败,队列无变化。p2的概率连接失...

HDU 4089 Activation【概率DP】

题目链接 题意:排队激活游戏,轮到队伍的第一个人有四种情况。1:连接失败,重新连接,仍然在第一个。2:激活失败,去队尾。3:激活成功,走掉。4:服务器崩溃。 现在有n个人,有个人排在第m个,求当服务器...

HDU 4089 Activation 概率DP 2011年区域赛北京现场赛I题

题目大意: 现在Tomato在等待进入游戏Chinese Paladin, 初始的时候他站在长度为n的队伍的第m个位置 每一秒都可能发生以下事件中的一个: p1的概率队伍保持不变, p2的概率队...

Hdu 4089 Activation (概率dp) - 2011 ACM-ICPC Beijing Regional Contest Problem I

题意: 有n人都是仙剑5的fans,现在要在官网上激活游戏,n个人排成一个队列(其中主角Tomato最初排名为m), 对于队列中的第一个人,在激活的时候有以下五种情况:     1.激活失败:留...

hdu 4089 Activation(概率dp)

Activation Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...

Hdu 4089 Activation(概率DP)

题目链接 Activation Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 4089 Activation(概率DP)
举报原因:
原因补充:

(最多只允许输入30个字)