zoukankan      html  css  js  c++  java
  • ZOJ 3822 Domination

    期望$dp$。

    设$dp[i][j][k]$表示已经有$i$行有棋子,有$j$列有棋子,并且放了$k$个棋子的状态下到达目标状态的期望天数。

    $dp[n][m][max(n,m)..n*m]$全部置为$0$。

    $dp[i][j][k] = dp[i][j][k+1]*(i*j-k)/(n*m-k)+dp[i+1][j][k+1]*(n-i)*j/(n*m-k)+dp[i][j+1][k+1]*i*(m-j)/(n*m-k)+dp[i+1][j+1][k+1]*(n-i)*(m-j)/(n*m-k)+1$。

    最后$dp[0][0][0]$就是答案。

    #pragma comment(linker, "/STACK:1024000000,1024000000")
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<ctime>
    #include<iostream>
    using namespace std;
    typedef long long LL;
    const double pi=acos(-1.0);
    void File()
    {
        freopen("D:\in.txt","r",stdin);
        freopen("D:\out.txt","w",stdout);
    }
    template <class T>
    inline void read(T &x)
    {
        char c = getchar();
        x = 0;
        while(!isdigit(c)) c = getchar();
        while(isdigit(c))
        {
            x = x * 10 + c - '0';
            c = getchar();
        }
    }
    
    int n,m;
    double dp[55][55][2600];
    
    int main()
    {
        int T; scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
            memset(dp,0,sizeof dp);
    
            for(int i=n;i>=0;i--)
            {
                for(int j=m;j>=0;j--)
                {
                    for(int k=i*j;k>=max(i,j);k--)
                    {
                        if(i==n&&j==m) continue;
    
                        dp[i][j][k] = dp[i][j][k+1]*(i*j-k)/(n*m-k)
                                    + dp[i+1][j][k+1]*(n-i)*j/(n*m-k)
                                    + dp[i][j+1][k+1]*i*(m-j)/(n*m-k)
                                    + dp[i+1][j+1][k+1]*(n-i)*(m-j)/(n*m-k)
                                    +1;
    
                    }
                }
            }
    
            printf("%.8f
    ",dp[0][0][0]);
        }
        return 0;
    }
  • 相关阅读:
    2015.07.20MapReducer源码解析(笔记)
    Hive(笔记)
    HDFS入门(1)
    Zookepper(2015.08.16笔记)
    USB_ModeSwitch 介绍(转)
    Perl 模块 Getopt::Std 和 Getopt::Long
    在linux下设置开机自动启动程序的方法
    gcc Makefile 入门
    Linuxexec函数族及system函数
    signal(SIGHUP, SIG_IGN)的含义
  • 原文地址:https://www.cnblogs.com/zufezzt/p/6403544.html
Copyright © 2011-2022 走看看