zoukankan      html  css  js  c++  java
  • DP Training J 简单期望DP

    DP Training J 简单期望DP

    题意

    (N)个盘子,盘子中装有(a_i)个寿司,每次等概率地选择一个盘子来吃一个寿司,若盘子空则不吃。

    问期望多少次选择能吃完所有寿司

    [1leq N le 300\ 1leq a_i leq3 ]

    分析

    (a_i)特别小,考虑其特殊性。

    (dp[a][b][c])表示还有1个寿司的盘子有(a)个,还有2个寿司的盘子有(b)个,3个的盘子有(c)个,此时期望选择多少次能吃完

    [dp[0][0][0] = 0 \ d = a + b + c\ dp[a][b][c] = n / d + dp[a - 1][b][c] cdot a / d + dp[a + 1][b-1][c]cdot b / d + dp[a][b + 1][c - 1] cdot c / d ]

    代码

    double dp[305][305][305];
    int a[30];
    int n;
    
    double dfs(int a,int b,int c){
    	if(!a && !b && !c) return 0;
    	if(dp[a][b][c] > -1 ) return dp[a][b][c];
    	int d = a + b + c;
    	double ans = 1.0 * n / d;
    	if(a) ans += dfs(a - 1,b,c) * a / d;
    	if(b) ans += dfs(a + 1,b - 1,c) * b / d;
    	if(c) ans += dfs(a,b + 1,c - 1) * c / d;
    	return dp[a][b][c] = ans;
    }
    
    int main(){
    	n = rd();
    	for(int i = 0;i < n;i++)
    		a[rd()]++;
    	memset(dp,-1,sizeof dp);
    	dp[0][0][0] = 0;
    	printf("%.10f",dfs(a[1],a[2],a[3])); 
    }
    
  • 相关阅读:
    APUE.3源码编译(Ubuntu16.04)
    《UNIX环境高级编程》(第三版)阅读笔记---2018-5-9
    css回归之用户界面
    css回归之文本
    js回归之字符串
    js回归之BOM
    js回归之事件
    百度前端面试总结
    书单
    剑指offer做题收获之一:补码
  • 原文地址:https://www.cnblogs.com/hznumqf/p/14380947.html
Copyright © 2011-2022 走看看