ZOJ 3822Domination(概率DP)

来源:互联网 发布:cms始源勇者王 编辑:程序博客网 时间:2024/06/07 20:05
#include<iostream>#include<cstdio>#include<algorithm>#include<cstdlib>#include<cmath>#include<string.h>#include<cstring>#include<string>#include<map>#include<set>#include<vector>#include<queue>using namespace std;typedef long long ll;#define sp  system("pause")#define mt(dp) memset(dp,0,sizeof dp)double dp[55][55][2550];int main()  {      int n, m;      int t;      scanf("%d",&t);      while(t--)      {          scanf("%d%d",&n,&m);          memset(dp,0,sizeof(dp));          dp[0][0][0] = 1.0;          for(int i = 1; i <= n; i++)          {              for(int j =1; j <= m; j++)              {                  for(int k = 1; k <= n*m; k++)                  {                      dp[i][j][k] = dp[i][j-1][k-1]*((1.0*i*(m-j+1))/(n*m-k+1))                                    +dp[i-1][j][k-1]*((1.0*(n-i+1)*j)/(n*m-k+1))                                    +dp[i-1][j-1][k-1]*((1.0*(n-i+1)*(m-j+1))/(n*m-k+1))                                    +dp[i][j][k-1]*((1.0*(i*j-k+1))/(n*m-k+1));                  }              }          }          double ans = 0;          for(int i = 1; i <= n*m; i++)          {              ans+=(dp[n][m][i]-dp[n][m][i-1])*i;          }          printf("%.12lf\n",ans);      }      return 0;  } 
0 0
原创粉丝点击