占坑[概率dp] poj 2096 Collecting Bugs
2016-07-21 02:17
453 查看
题目分析
dp[i][j]代表已达到前i和前j,以此为起始到达n、s的期望。此时,有pi1=in的概率再次选择前i个,qj1=js的概率再次选择前j个,pi2=n−in的概率选择后面n-i个中的一个,qj2=s−js的概率选择后面s-j个中的一个。则dpij=pi1qj1dpij+pi1qj2dpi(j+1)+pi2qj1dp(i+1)j+pi2qj2dp(i+1)(j+1)+1
“+1”要放在外面,而非等式右边每个的dp上。(占坑日后解释)
代码
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<map> #include<algorithm> using namespace std; const double eps=1e-9; const int maxn = 1003; int n,s; double ji; double dp[maxn][maxn]; int main() { while(cin>>n>>s) { ji=n*s; dp [s]=0; for(int i=n;i>=0;i--) for(int j=s;j>=0;j--) { if(i==n && j==s) continue; double x,y; x=1-i*j/ji; y=1; if(i+1<=n) y+=(n-i)*j/ji*dp[i+1][j]; if(j+1<=s) y+=i*(s-j)/ji*dp[i][j+1]; if(i+1<=n && j+1<=s) y+=(n-i)*(s-j)/ji*dp[i+1][j+1]; dp[i][j]=y/x; } printf("%.4f\n",dp[0][0]); } return 0; }
相关文章推荐
- 详解Android应用中屏幕尺寸的获取及dp和px值的转换
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- LFC1.0.0 版本发布
- ACM程序设计大赛题目分类
- 2015年acm国内排名
- Android dpi,dip,dp的概念以及屏幕适配
- 计算字符串最后一个单词长度
- Android px、dp、sp之间相互转换
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- HP data protector软件学习1--基本角色与基本工作流程
- HP data protector软件学习2--软件组成与界面介绍
- 矩阵的乘法操作
- android中像素单位dp、px、pt、sp的比较