ZOJ 3329 One Person Game(概率dp)
来源:互联网 发布:pc蛋蛋算法 编辑:程序博客网 时间:2024/06/07 06:20
题意:有三个骰子,分别有k1,k2,k3个面。
每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。
当分数大于n时结束。求游戏的期望步数。初始分数为0
题解:
转自:kuangbin
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;//typedef __int64 lld;#define oo 0x3f3f3f3f#define Mod 1000000007#define maxn 505double A[maxn],B[maxn];double p[maxn];int main(){ int n,k1,k2,k3,a,b,c,T; scanf("%d",&T); while(T--) { scanf("%d %d %d %d %d %d %d",&n,&k1,&k2,&k3,&a,&b,&c); memset(p,0,sizeof p); p[0]=1.0/k1/k2/k3; for(int i=1;i<=k1;i++) for(int j=1;j<=k2;j++) for(int k=1;k<=k3;k++) if(i!=a||j!=b||k!=c) p[i+j+k]+=p[0]; memset(A,0,sizeof A); memset(B,0,sizeof B); for(int i=n;i>=0;--i) { A[i]=p[0]; B[i]=1.0; for(int j=1;j<=k1+k2+k3;++j) { A[i]+=A[i+j]*p[j]; B[i]+=B[i+j]*p[j]; } } printf("%.15lf\n",B[0]/(1-A[0])); } return 0;}
0 0
- ZOJ 3329 One Person Game(概率dp)
- ZOJ 3329 One Person Game 概率DP
- zoj 3329 One Person Game(概率DP)
- zoj 3329 One Person Game(概率dp)
- ZOJ 3329 One Person Game (概率dp)
- zoj 3329 One Person Game 概率dp
- zoj 3329 One Person Game (概率DP )
- ZOJ 3329 One Person Game (概率DP)
- ZOJ - 3329 One Person Game(概率dp)
- ZOJ 3329 One Person Game 概率DP
- ZOJ 3329 One Person Game (概率DP)
- ZOJ 3329 One Person Game(概率DP)
- zoj 3329 One Person Game 概率dp
- ZOJ 3329 One Person Game 概率dp
- zoj 3329 One Person Game 概率dp
- ZOJ 3329 One Person Game (概率DP)
- ZOJ 3329 One Person Game [概率DP]
- ZOJ 3329 One Person Game 概率dp
- java基础:反射类的构造方法
- 开启我的博客生涯
- leetcode #165 Compare Version Numbers
- 进程与线程的一个简单解释(我看过最好的解释)
- Oracle命令行操作方式
- ZOJ 3329 One Person Game(概率dp)
- linux进程间通信之共享内存篇
- 卸载CentOS自带的JDK
- 虚拟机检测技术剖析
- Windows7 注册表byte[]密钥解密
- JNI编程注意事项
- ubuntu如何删除安装的软件,
- 2015寒假集训周赛第一场 F 题
- iOS开发-AFNetworking之上传图片音乐文件