LightOJ

来源:互联网 发布:js 时间控件选择星期 编辑:程序博客网 时间:2024/06/05 19:46

这个题….
二维dp分情况不多bb

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;double dp[1001][1001];double bj[1001][1001];void dfs(int tt, int dd){    if (bj[tt][dd])return;    bj[tt][dd] = 1;    if (tt % 2)return;    if (dd == 0)    {        dfs(tt - 2, dd);        dp[tt][dd] = (tt - 1)*dp[tt - 2][dd] / (tt + 1);        return;    }    if (tt == 0)    {        dfs(tt, dd - 1);        dp[tt][dd] = dp[tt][dd-1];        return;    }    /*if (dd == 1)    {        dfs(tt, dd - 1);        dfs(tt - 2, dd);        dp[tt][dd] = (tt*(tt - 1)*dp[tt - 2][dd] + dp[tt][dd - 1]) / ((tt + 2)*(tt + 1) - 1);        return;    }*/    dfs(tt - 2, dd);    dfs(tt, dd - 1);    dp[tt][dd] = (tt*(tt - 1)*dp[tt - 2][dd] + dd*(2 * tt + 1)*dp[tt][dd - 1]);    dp[tt][dd] /= (tt + dd + 1)*(tt + dd)*1.0 - dd*dd*1.0;}int main(){    int T;    cin >> T;    dp[0][0] = 1;    bj[0][0] = 1;    int n,u=0,t,d;    while (T--)    {        scanf("%d%d", &t, &d);        dfs(t, d);        printf("Case %d: %.10f\n", ++u, dp[t][d]);    }}