poj 1322 Chocolate 概率dp
来源:互联网 发布:js弹出确认对话框 编辑:程序博客网 时间:2024/05/17 09:47
//poj 1322 AC//sep9#include <iostream>using namespace std;int c,n,m;double dp[2][128];int main(){while(scanf("%d",&c)==1&&c){scanf("%d%d",&n,&m);if(m>c||m>n||(m+n)%2){puts("0.000");continue;}if(n>1000){n=1000+n%2;}memset(dp,0,sizeof(dp));dp[0][0]=1.0;for(int i=1;i<=n;++i)for(int j=0;j<=i&&j<=c;++j){dp[i%2][j]=0.0;if((i+j)%2) continue;if(j>0) dp[i%2][j]+=dp[1-i%2][j-1]*((c-j+1.0)*1.0/c); if(j+1<=i&&j+1<=c) dp[i%2][j]+=dp[1-i%2][j+1]*((j+1.0)*1.0/c);}printf("%.3lf\n",dp[n%2][m]);}return 0;}
//poj 1322 矩阵乘法解法 tle//sep9#include <iostream>using namespace std;int c,n,m;const int MAXC=128;double pow[12][MAXC][MAXC];double tmp[MAXC][MAXC],ans[MAXC][MAXC];void copy(double t[][MAXC],double s[][MAXC]){for(int i=0;i<=c;++i)for(int j=0;j<=c;++j)t[i][j]=s[i][j];}void mul_mat(double C[][MAXC],double A[][MAXC],double B[][MAXC]){for(int i=0;i<=c;++i)for(int j=0;j<=c;++j)C[i][j]=0.0;for(int k=0;k<=c;++k)for(int i=0;i<=c;++i)for(int j=0;j<=c;++j)C[i][j]+=A[i][k]*B[k][j];return ;}void cal_pow(){for(int i=1;i<10;++i)mul_mat(pow[i],pow[i-1],pow[i-1]); }int main(){while(scanf("%d",&c)==1&&c){scanf("%d%d",&n,&m);if(m>c||m>n){puts("0.000");}if(n>1000){n=1000+n%2;}for(int i=0;i<=c;++i)for(int j=0;j<=c;++j)pow[0][i][j]=0.0;for(int i=1;i<=c;++i){pow[0][i-1][i]=1.0*i/c;pow[0][i][i-1]=(c+1-1.0*i)/c;}cal_pow();for(int i=0;i<=c;++i)for(int j=0;j<=c;++j)ans[i][j]=0.0;for(int i=0;i<=c;++i)ans[i][i]=1.0;for(int e=0;e<10;++e)if(n&(1<<e)){copy(tmp,ans);mul_mat(ans,tmp,pow[e]);}printf("%.3lf\n",ans[m][0]);}return 0;}
0 0
- POJ--1322[Chocolate] DP+概率
- poj 1322 Chocolate (概率dp)
- poj 1322 Chocolate 概率dp
- POJ-1322 Chocolate(概率DP)
- POJ 1322 Chocolate(概率DP)
- POJ 1322 Chocolate 概率DP 近似取值
- poj 1322 Chocolate(生成函数 or 概率dp)
- poj 1322 Chocolate (生成函数||概率DP)
- 【TOJ 1118】Chocolate【概率DP】
- POJ 1322 概率DP
- poj 1322 概率DP
- poj 1322 概率dp
- poj 1322 概率dp
- POJ 1322 Chocolate (dp or 组合数学母函数)
- poj 1322 Chocolate
- poj 1322 Chocolate
- poj 1322 Chocolate
- poj 1322 Chocolate
- xampp启动apache服务,打开出现端口被占用提示
- iOS 设置按钮上图下文的方式
- 安卓横竖屏切换的生命周期(重点)
- 在 Windows 命令提示符进入到文件解压目录
- 《LINUX3.0内核源代码分析》第二章:中断和异常(3)
- poj 1322 Chocolate 概率dp
- 针对Xcode升级到8之后,注释失效的解决方法
- 数组
- iOS绘图——Quartz 2D使用方法
- PAT乙级.1017. A除以B (20)
- foreach 循环详解
- Jenkins学习总结(6)——了解DevOps的前世今生
- 进程间的几种常用通信方式
- 分享Kali Linux 2016.2最新镜像20160919