题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4487

题目大意:
开始位置在0,每一步可以向右向左或者不动,问走了n步后,路径中能到达最右的期望。

解题思路:

比赛的时候,题目理解错了,认为要回到起点。-_-   -_-

由于最后到达的位置不确定,每条路径的最右距离也不确定。

所以记dp[i][j][k]为走了i步,到达j位置,且路径中最右位置为k时概率。

显然k>=j 否则为0

如果k==j,这一步有两种情况,1、刚好第一次达到最大 2、先前已经达到了最大。注意此时不能从右边向左过来,超过了k.

如果k>j ,说明这一步没有到达k,只能是前面的已经到达了k.

转移方程:

s为不动的概率,r,l分别为向右走和向左走的概率。

记开始的位置为100.

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/
#define N 110
double dp[2][N*2][N*2];  //dp[][i][j]表示走到当前步,到达i,最右的位置为j的概率
int main()
{int t,d,n;double l,r,s;scanf("%d",&t);while(t--){scanf("%d%d%lf%lf",&d,&n,&l,&r);s=1-l-r;memset(dp,0,sizeof(dp));dp[0][100][100]=1; //初始化最开始的位置int la=0,cur;for(int i=1;i<=n;i++){cur=la^1;for(int j=100-i;j<=100+i;j++){for(int k=max(100,j);k<=200;k++) //k肯定要>=j,第一步在100无论怎么走最右肯定大于等100{if(k==j) //这一步到了最右dp[cur][j][k]=dp[la][j][k]*s+dp[la][j-1][k-1]*r+dp[la][j-1][k]*r;else  //k>j的情况 之前已经到达了最大kdp[cur][j][k]=dp[la][j][k]*s+dp[la][j-1][k]*r+dp[la][j+1][k]*l;}}la=cur;}double ans=0;for(int i=(100-n);i<=100+n;i++)for(int j=100;j<=100+n;j++)ans=ans+dp[cur][i][j]*(j-100); //直接求期望printf("%d %.4lf\n",d,ans);}return 0;
}

简单概率dp-hdu-4487-Maximum Random Walk相关推荐

  1. HDU 4487 Maximum Random Walk

    Maximum Random Walk Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  2. 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...

    世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random  Walk)是一种解决随机问题的方法,它 ...

  3. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  4. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 ...

  5. 用python写一个程序来验证每个数字的生成概率是否相同_Python实现简单生成验证码功能【基于random模块】...

    本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...

  6. HDU 1493 QQpet exploratory park(概率DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1493 题意:一排有61个格子标号0-60.其中停在5,12, 22, 29, 33, 38, 42, ...

  7. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  8. HDU - 4035 Maze(概率dp)

    题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i ] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ...

  9. HDU - 6558/概率dp(从后往前推导)

    VJ地址 中文题意: 有一个苦逼程序员小A,他有一个女朋友B,最近看上了一个游戏,他想买这个游戏,可是小A是一个怕老婆的人,每个 月的工资都需要上交,小A找他女朋友商量了好久,最后B同意他用每个月的工 ...

  10. 随机漫步(random walk)

    1.题目 有一类问题总称为"随机漫步"(Random Walk)问题,这类问题长久以来吸引着数学界的兴趣.所有这些问题即使是最简单的解决起来也是极其困难的.而且它们在很大程度上还远 ...

最新文章

  1. React 数字取整
  2. 数据库知识点补充::约束
  3. C语言指出下列程序的错误,2012年计算机二级C语言精编教程第二章(8)
  4. 成功解决ValueError: could not convert string to float: ‘\\N‘
  5. SQL SERVER 使用 OPENRORWSET(BULK)函数将txt文件中的数据批量插入表中(2)
  6. go语言学习(基本数据类型)
  7. Spring自定义命名空间
  8. LDA-Latent Dirichlet Allocation 学习笔记
  9. 基于java TCP实现网络通信聊天室《建议收藏附完整源码》
  10. Python 的时间格式化
  11. Centos7安装Nginx实战
  12. Swift中的willSet与didSet
  13. kepware mysql_Kepware实现向数据库实时写入数据
  14. vs2010最佳配色选择_2010年代35部最佳电影
  15. excel数据正在计算机,excel数据太多表格太卡-急!Excel数据量大,电脑卡死?
  16. c语言课程设计歇后语,拼音字母c开头的歇后语
  17. 最大连通分支Giant Component
  18. 哈工大计算机网络第一章——计算机网络概述复习
  19. FFmpeg提取视频中的音频
  20. NPOI导出Excel自动计算公式问题

热门文章

  1. 【Python网络爬虫实战篇】关于在青果教务网络管理系统爬取学生成绩的分析及代码展示——以郑州轻工业大学(zzuli)教务网络管理系统为例
  2. 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
  3. The Art Of Code-Beta
  4. 使用导入 Excel 的方式批量修改文件名称及文件扩展名
  5. 批量更改PPT文件中的内容(修改大量PPT)
  6. 旋转矩阵(Rotation matrix):旋转轴与旋转角 ( axis and angle )
  7. C++学习 十五、类继承(4)基类方法重写,隐藏
  8. VMware上Ubuntu联网(NAT方式)
  9. 计算机单位kb和m比较,G、GB、KB、M和MB是怎么回事?
  10. 微信小程序体验版分享的坑