zoj 3329 One Person Game(概率dp)
2014-03-18 11:33
337 查看
题意:三个骰子,这三个骰子有K1、K2、K3个面,cnt最开始等于0,同时掷3个骰子,如果这三个骰子分别为a,b,c,那么cnt=0,否则cnt+=(a+b+c)。如果cnt<=n,那么接着掷,求掷骰子的次数的期望。
思路:最开始推完方程以后发现存在一个E(0)的常数,本来想用直接用dp[i]表示dp[i]-E[0],后来发现不行,因为最后边界的位置就错了。正确的姿势是把E(i)表示为E(i)=A[i]*E[0]+B[i],然后转化为求A[i]和B[i]。
代码:
思路:最开始推完方程以后发现存在一个E(0)的常数,本来想用直接用dp[i]表示dp[i]-E[0],后来发现不行,因为最后边界的位置就错了。正确的姿势是把E(i)表示为E(i)=A[i]*E[0]+B[i],然后转化为求A[i]和B[i]。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<queue> #include<stack> #include<set> #include<cmath> #include<vector> #define inf 0x3f3f3f3f #define Inf 0x3FFFFFFFFFFFFFFFLL #define eps 1e-9 #define pi acos(-1.0) using namespace std; typedef long long ll; const int maxn=500+100; double A[maxn],B[maxn],p; bool flag[maxn]; int a,b,c,n,k1,k2,k3; void f(int x) { if(x>n) {A[x]=B[x]=0;return ;} if(flag[x]) return ; flag[x]=true; A[x]=p;B[x]=1; 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) continue; f(x+i+j+k); A[x]+=p*A[x+i+j+k]; B[x]+=p*B[x+i+j+k]; } } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d%d%d%d",&n,&k1,&k2,&k3,&a,&b,&c); memset(flag,0,sizeof(flag)); p=1.0/k1/k2/k3; f(0); printf("%.16lf\n",B[0]/(1-A[0])); } return 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,求期望】
- zoj-3329-One Person Game-有环的概率DP
- ZOJ 3329 One Person Game(概率dp,迭代系数)