zoukankan      html  css  js  c++  java
  • POJ 2096 【期望DP】

    题意:

    有n种选择,每种选择对应m种状态。每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等。

    求n种选择和m种状态中每种至少发生一次的期望。

    期望DP好别扭啊。要用倒推的方法。

    dp[i][j]表示已经发生了i种选择,j种状态。

    那么由dp[n][m]这个时刻到最终时刻的期望是0.

    而我们的起始时刻是dp[0][0]。

    而dp[i][j]可以转移到四种情况,

    1 dp[i][j]本身

    2 dp[i+1][j]

    3 dp[i][j+1]

    4 dp[i+1][j+1]

    那么dp[i][j]表示的期望是他能够转移到别的所有的情况的期望乘其权值的和。

    好的。这大概就是期望DP的精髓了...

    #include<stdio.h>
    #include<string.h>
    double dp[1005][1005];
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        memset(dp,0,sizeof(dp));
        for(int i=n;i>=0;i--)
        {
            for(int j=m;j>=0;j--)
            {
                if(i!=n||j!=m)
                dp[i][j]=(dp[i][j+1]*(m-j)*i/((double)(m*n))+dp[i+1][j]*(n-i)*j/((double)(m*n))+dp[i+1][j+1]*(n-i)*(m-j)/((double)(m*n))+1)/((double)(1-((double)(i*j))/(m*n)));
            }
        }
        printf("%.4lf
    ",dp[0][0]);
    }
  • 相关阅读:
    如何写Makefile?
    C语言变量的存储类别详解
    Longest Palindrome Substring
    Count Primes
    Closest Binary Search
    Search Insert Position
    Set Matrix Zeros ****
    Search for a Range
    Two Sum II
    Jump Game
  • 原文地址:https://www.cnblogs.com/tun117/p/5056987.html
Copyright © 2011-2022 走看看