您的位置:首页 > 其它

POJ 2096 Collecting Bugs(期望DP)

2012-09-30 21:22 344 查看
题目链接

和那天网络赛很相似,倒着推,这是二维的情况。注意提交别用G++,真坑啊。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#define eps 1e-9
using namespace std;
double p[1005][1005];
int main()
{
int n,m,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(p,0,sizeof(p));
for(i = n-1; i >= 0; i --)
{
p[i][m] = p[i+1][m] + n*1.0/(n-i);
}
for(i = m-1; i >= 0; i --)
{
p
[i] = p
[i+1] + m*1.0/(m-i);
}
for(i = n-1; i >= 0; i --)
{
for(j = m-1; j >= 0; j --)
{
p[i][j] = (1.0/(n*m-i*j))*((n-i)*j*p[i+1][j]+(n-i)*(m-j)*p[i+1][j+1]+i*(m-j)*p[i][j+1]+n*m);
}
}
/*for(i = n;i >= 0;i --)
{
for(j = m;j >= 0;j --)
printf("%.2lf ",p[i][j]);
printf("\n");
}*/
printf("%.4lf\n",p[0][0]+eps);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: