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]);
    }
  • 相关阅读:
    Mitmproxy使用教程for mac
    Flink重启策略
    Flink中的Time
    Flink的分布式缓存
    8-Flink中的窗口
    10-Flink集群的高可用(搭建篇补充)
    Flink-Kafka-Connector Flink结合Kafka实战
    15-Flink实战项目之实时热销排行
    16-Flink-Redis-Sink
    17-Flink消费Kafka写入Mysql
  • 原文地址:https://www.cnblogs.com/tun117/p/5056987.html
Copyright © 2011-2022 走看看