LightOJ 1030 Discovering Gold (期望)
2017-07-24 11:36
393 查看
https://vjudge.net/problem/LightOJ-1030
题意:
在一个1×N的格子里,每个格子都有相应的金币数,走到相应格子的话,就会得到该格子的金币。
现在从1格子开始,每次摇骰子,他就前进几步,但有一种情况例外,如果当前位置+色子数 > N,那么他就会重新摇色子。
走到N这个位置的话,意味着游戏结束了。
问游戏结束时,这个人得到金币的期望。
思路:
这里给出两种做法,一种是正序求解,一种是逆序求解。
①正序求解:
这种做法是从前往后计算每个格子的概率,假设我们现在处于第i个格子,它后面还有k=min(n-i,6)个格子,那么通过这个格子,我们就可以到达它后面的格子,现在它后面第j(1<=j<=k)个格子的概率就要加上d[i] / k。仔细想一想的话,其实就是个全概率。自己不太能讲得清,具体还是看代码吧。
②逆序求解:
这种做法是从后往前计算,也就是概率dp。d[i]表示以i为起点的格子所能获得的期望。
当我们要计算d[i]的时候,d[i]+=1/k*d[i+j]。
逆序求解
题意:
在一个1×N的格子里,每个格子都有相应的金币数,走到相应格子的话,就会得到该格子的金币。
现在从1格子开始,每次摇骰子,他就前进几步,但有一种情况例外,如果当前位置+色子数 > N,那么他就会重新摇色子。
走到N这个位置的话,意味着游戏结束了。
问游戏结束时,这个人得到金币的期望。
思路:
这里给出两种做法,一种是正序求解,一种是逆序求解。
①正序求解:
这种做法是从前往后计算每个格子的概率,假设我们现在处于第i个格子,它后面还有k=min(n-i,6)个格子,那么通过这个格子,我们就可以到达它后面的格子,现在它后面第j(1<=j<=k)个格子的概率就要加上d[i] / k。仔细想一想的话,其实就是个全概率。自己不太能讲得清,具体还是看代码吧。
②逆序求解:
这种做法是从后往前计算,也就是概率dp。d[i]表示以i为起点的格子所能获得的期望。
当我们要计算d[i]的时候,d[i]+=1/k*d[i+j]。
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<sstream> #include<vector> #include<stack> #include<queue> #include<cmath> #include<map> #include<set> using namespace std; typedef long long ll; typedef pair<int,int> pll; const int INF = 0x3f3f3f3f; const int maxn = 100 + 5; int n; double a[maxn]; int main() { //freopen("in.txt","r",stdin); int T; int kase=0; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lf",&a[i]); for(int i=n-1;i>=1;i--) { int k=min(6,n-i); for(int j=1;j<=k;j++) { a[i]+=1./k*a[i+j]; } } printf("Case %d: ",++kase); printf("%.7f\n",a[1]); } return 0; }
逆序求解
相关文章推荐
- 【LightOJ 1030】Discovering Gold(期望DP)
- LightOJ 1030 Discovering Gold(期望DP)
- 【概率&期望】Discovering Gold LightOJ - 1030
- LightOj-1030 Discovering Gold (期望DP)
- LightOj:1030-Discovering Gold(期望dp模板)
- lightOJ 1030(期望)
- LightOJ 1030 Discovering Gold(期望)
- Lightoj 1030(求期望)
- LightOJ 1030 【概率DP求期望】
- lightoj 1030 Discovering Gold 概率dp求期望
- lightoj 1030 - Discovering Gold[期望]
- 【期望dp】LightOJ 1030 Discovering Gold
- LightOJ 1030 - Discovering Gold (期望dp)
- lightoj 1030 - Discovering Gold 【期望】
- LightOJ 1030 Discovering Gold + Hdu4405 Aeroplane chess (期望)
- LightOJ1030(数学概率与期望)
- lightoj 1030 Discovering Gold[ 期望 ]
- LightOJ - 1030 Discovering Gold 期望
- LightOJ - 1030 Discovering Gold (期望)
- lightOJ 1030(期望)