hdu 4487 概率DP
2013-09-01 15:08
309 查看
只要求出状态转移方程题目就简单了;
dp[i][j][k] 表示走i步到j位置最右边位置是k 所以很轻易就知道k>=j;
s:不走概率 l向左走概率 r向右走概率
如果k==j;
dp[i][j][k]=dp[i-1][j][k]*s+dp[i-1][j-1][k-1]*r+dp[i-1][j-1][k]*r;
如果k!=j;
dp[i][j][k]=dp[i-1][j][k]*s+dp[i-1][j-1][k]*r+sp[i-1][j+1][k]*r;
如果n值达到1000 而dp[1001][2001][2001]是开不出来的,所以采用动态数组,因为下一步只与上一步的有关系,所以开dp[2][2001][2001]即可。
dp[i][j][k] 表示走i步到j位置最右边位置是k 所以很轻易就知道k>=j;
s:不走概率 l向左走概率 r向右走概率
如果k==j;
dp[i][j][k]=dp[i-1][j][k]*s+dp[i-1][j-1][k-1]*r+dp[i-1][j-1][k]*r;
如果k!=j;
dp[i][j][k]=dp[i-1][j][k]*s+dp[i-1][j-1][k]*r+sp[i-1][j+1][k]*r;
如果n值达到1000 而dp[1001][2001][2001]是开不出来的,所以采用动态数组,因为下一步只与上一步的有关系,所以开dp[2][2001][2001]即可。
#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> using namespace std; double l,r,s; double dp[2][300][300]; int main() { int T,n; scanf("%d",&T); for(int i1=1;i1<=T;i1++) { scanf("%d%d%lf%lf",&i1,&n,&l,&r); s=1-l-r; memset(dp,0,sizeof(dp)); int cur=1; int last=0; dp[0][100][100]=1; for(int i=1;i<=n;i++) { cur=last^1; for(int j=100-i;j<=100+i;j++) { for(int k=max(100,j);k<=100+i;k++) { if(j==k) dp[cur][j][k]=dp[last][j][k]*s+dp[last][j-1][k-1]*r+dp[last][j-1][k]*r; else dp[cur][j][k]=dp[last][j][k]*s+dp[last][j-1][k]*r+dp[last][j+1][k]*l; } } last=cur; } double sum=0; for(int i=100-n;i<=(100+n);i++) { for(int j=100;j<=(100+n);j++) { sum+=dp[cur][i][j]*(j-100); } } printf("%d %.4lf\n",i1,sum); } return 0; }
相关文章推荐
- 简单概率dp-hdu-4487-Maximum Random Walk
- 简单概率dp-hdu-4487-Maximum Random Walk
- HDU 4487 Maximum Random Walk(概率DP)
- HDU 4487 Maximum Random Walk 概率DP
- HDU 4487 Maximum Random Walk 概率 dp
- hdu 4487 Maximum Random Walk(概率dp)
- 借助树的概率dp(期望)+数学-好题-hdu-4035-Maze
- hdu 4652(概率dp)
- HDU 5001 概率dp
- hdu 4405 Aeroplane chess (概率DP)
- hdu-4089-Activation-概率dp
- HDU 4652 Dice(概率dp)
- HDU 4336 Card Collector(状态压缩+概率DP)
- hdu 3853 LOOPS(概率 dp 期望)
- hdu 4035 Maze (树形概率dp)
- hdu 4089 Activation 概率dp 消元
- hdu 4035 Maze 概率DP+树形DP
- [AC自动机+概率dp] hdu 3689 Infinite monkey theorem
- hdu 3853 概率DP
- HDU 3076 ssworld VS DDD 概率dp,无穷级数,oj错误题目 难度:2