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

zoj 3299 概率dp

时间:2014-07-29 14:28:18      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:blog   http   os   io   for   art   代码   ar   

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3329

回头重推式子

题解:http://blog.csdn.net/morgan_xww/article/details/6775853#reply

学到:
1、目前做的两道期望的状态转移方程都是从大向小推,定义方式:dp[i][j][k]....  满足i,j,k时,要达到upbound(i),upbound(j),upbound(k),需要XX的期望

2、待定系数的方法

3、算pk的代码:

这里做个注释:
p[i+k+j]=sigma(v1*v2*v3/(k1+k2+k3)),然后就能理解那个代码了吧。

4、求状态转移方程关键还是找到一个当前状态与其他状态的关系等式,,,,目前经验不足,继续刷题吧

5、printf("%.15lf",)-----------哇靠,第一次见到这种写法,而且不这么些精度还不够

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

#define rep(i,s,e) for(int i=s;i<e;i++)
#define repe(i,s,e) for(int i=s;i<=e;i++)
#define reped(i,s,e) for(int i=s;i>=e;i--)
#define arclr(aa,v) memset(aa,v,sizeof(aa));

const int MAXN = 500+30;

int A,B,c,k1,k2,k3,n;
double a[MAXN],b[MAXN],p[MAXN],e[MAXN];

void calp(int k1, int k2, int k3)
{
    memset(p,0,sizeof(p));
    //这个p的算法很不错啊
    p[0]=1.0/(k1*k2*k3);
    repe(i,1,k1)
        repe(j,1,k2)
            repe(k,1,k3)
            {
                if(i==A && j==B && k==c)continue;
                p[i+k+j]+=p[0];
            }
    //p[k1+k2+k3]=p[0];
}

double solve()
{
    e[n+1]=a[n+1]=b[n+1]=0;
    arclr(a,0);
    arclr(b,0);
    int en=k1+k2+k3;
    for(int i=n;i>=0;i--)
    {
        for(int k=3;k<=en;k++)
        {
            a[i]+=p[k]*a[i+k];
            b[i]+=p[k]*b[i+k];
        }
        a[i]+=p[0];
        b[i]+=1;
    }
    return b[0]/(1.0-a[0]);
}

int main()
{
    //freopen("zoj3299.txt","r",stdin);
    int ncase;
    scanf("%d",&ncase);
    while(ncase--)
    {
        scanf("%d%d%d%d%d%d%d", &n, &k1, &k2,&k3, &A, &B, &c);
        calp(k1,k2,k3);
        printf("%.15lf\n",solve());
    }
    return 0;
}


zoj 3299 概率dp,布布扣,bubuko.com

zoj 3299 概率dp

标签:blog   http   os   io   for   art   代码   ar   

原文地址:http://blog.csdn.net/u011026968/article/details/38237057

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