POJ 2096 概率dp
来源:互联网 发布:linux 安装中文字符集 编辑:程序博客网 时间:2024/06/07 06:41
#include <cstdio>const int maxn = 1E3 + 10;double dp[maxn][maxn];int n, s, ns;int main(int argc, char const *argv[]){scanf("%d%d", &n, &s);ns = n * s;dp[n][s] = 0;for (int i = n; i >= 0; i--)for (int j = s; j >= 0; j--)if (i == n && j == s) continue;else dp[i][j] = ( ns + (n - i) * j * dp[i + 1][j] + i * (s - j) * dp[i][j + 1] + (n - i) * (s - j) * dp[i + 1][j + 1] ) / ( ns - i * j );printf("%.4lf\n", dp[0][0]);return 0;}
dp[i][j]表示已经找到i种bug,并存在于j个子系统中,要达到目标状态的天数的期望。
显然,dp[n][s]=0,因为已经达到目标了。而dp[0][0]就是我们要求的答案。
dp[i][j]状态可以转化成以下四种:
dp[i][j] 发现一个bug属于已经找到的i种bug和j个子系统中
dp[i+1][j] 发现一个bug属于新的一种bug,但属于已经找到的j种子系统
dp[i][j+1] 发现一个bug属于已经找到的i种bug,但属于新的子系统
dp[i+1][j+1]发现一个bug属于新的一种bug和新的一个子系统
以上四种的概率分别为:
p1 = i*j / (n*s)
p2 = (n-i)*j / (n*s)
p3 = i*(s-j) / (n*s)
p4 = (n-i)*(s-j) / (n*s)
0 0
- poj 2096 概率dp
- poj 2096 概率dp
- POJ 2096 概率dp
- poj 2096<概率dp>
- poj 2096 概率dp
- POJ 2096 概率dp
- poj 2096 概率dp
- POJ 2096 概率DP
- poj 2096 概率dp
- POJ 2096 概率dp
- poj 2096概率dp
- POJ 2096(概率DP)
- POJ 2096 概率DP入门
- POJ 2096 (概率dp)
- poj 2096 概率dp详解
- Poj 2096 (dp求期望) 概率dp
- POJ 2096 Collecting Bugs 概率DP
- 概率dp-poj-2096-Collecting Bugs
- Android Fragment 真正的完全解析(上)
- 第2周.项目3:小试循环
- 第二周项目3 小试循环
- codeforces 106C. Buns【多重背包】
- 银行业务-贷款
- POJ 2096 概率dp
- 算法训练 暗恋
- Java IO——File类
- Handler用法
- ACM2014
- php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式浅谈
- HDUACM2017
- <Unity3D>上下左右 键控制人移动
- javascript中定义事件的三种方式