又一道期望DP,其实这题与hdu4576那道概率DP很像(这道我也写了题解)。那么这两道一道求概率,一道求期望,又能放在一起对比一下了,期望和概率的求法的不同。

先总结一句话:一般求概率DP或者是递推的问题,都是正着推,从初始状态往结束状态(结束状态一般是此类题要求的状态)推,所以先得到(或者说先已知)的是靠近初始状态的状态,所以想要求的当前状态是由可转移到此状态的前N可能个状态推过来的;而一般求期望DP,都是逆着推,从结束状态往初始状态(初始状态往往是此类题要求的状态)推,所以先得到(或者说先已知)的是靠近结束状态的状态,所以想要求的当前状态是由此状态对应接下来的N可能个状态推过来的。

本题题意:数轴上有N+1个点(编号0~N),一个人玩游戏,从0出发,当到达N或大于N的点则游戏结束。每次行动掷骰子一次,骰子编号1-6,掷到多少就向前走几步,这个数轴上还有些特殊点,这些点类似飞行棋中的飞行点,只要到达这些点就可以直接飞到给定点。求总共投掷骰子次数的期望。

例如本题,倒着过来分析。用dp[i]表示在i位置时,距离游戏结束还要投掷次数的期望。显然dp[n]为0,需要求的是dp[0]。对于直接飞过去的点。例如用数组vis[]来表示,vis[a]=b,表示当到达a点时可以直接飞到b点,那么显然dp[vis[a]]=dp[a]。倒着推,dp[i](假设该点不属于可飞行的点)的下面一个状态有6种可能(即对应6种可能的骰子数),每种都是1/6的概率。所以for(int x=1;x<=6;x++)dp[i]+=dp[i+x]/6.0;dp[i]+=1;注意最后加玩每种可能性的期望后要+1,因为这6种可能性加起来只是下一个状态的期望,当前状态是他们的前一个状态,所以期望(直接理解为投掷骰子的次数)要+1。具体代码如下:

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <cstring>
#define ll long long
double dp[100005];
int vis[100005];int main()
{int n,m;while(scanf("%d%d",&n,&m)!=EOF){if((n+m)==0)break;memset(vis,-1,sizeof(vis));for(int i=1;i<=m;i++){int a,b;scanf("%d%d",&a,&b);vis[a]=b;}memset(dp,0,sizeof(dp));for(int i=n-1;i>=0;i--){if(vis[i]==-1){for(int j=1;j<=6;j++){dp[i]+=dp[i+j]/6.0;}dp[i]+=1;}elsedp[i]=dp[vis[i]];}printf("%.4lf\n",dp[0]);}return 0;
}

转载于:https://www.cnblogs.com/kevinACMer/p/3724671.html

HDU4405(期望DP)相关推荐

  1. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  2. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  3. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  4. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  5. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  6. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  7. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  8. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  9. string (KMP+期望DP)

    Time Limit: 1000 ms   Memory Limit: 256 MB Description  给定一个由且仅由字符 'H' , 'T' 构成的字符串$S$. 给定一个最初为空的字符串 ...

  10. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

最新文章

  1. python函数入参和返回值
  2. java关于throw Exception的一个小秘密
  3. c语言python零基础教学_编程零基础应当如何开始学习 Python?附教程
  4. python上传文件到onedrive_基于Python的onedrive文件本地化浏览系统–PyOne
  5. python-深浅拷贝
  6. 高德软件有限公司python试题 及 答案
  7. Activiti进阶(七)——排他网关(ExclusiveGateWay)
  8. python是什么专业学的-python编程学习需要哪些基础和准备工作?
  9. HTML学习总结(4)——表格/块/内联元素/iframe/颜色/脚本/实体
  10. python三引号的作用_Python学习笔记(三)基本数据类型
  11. 编辑器sublime text3和插件package control、Sidebar Enhancements插件安装
  12. WPS JSA 学习笔记
  13. 教你快速打粤语正字 讯飞输入法语音输入1分钟400字
  14. 新元宇宙每周连载《地球人奇游天球记》第十五回土星种菜
  15. (CentOS7)IP地址的配置与主机名和hosts映射
  16. LaTex中让页码从正文开始编号
  17. 德鲁克管理思想精髓的17个关键词
  18. 叉乘点乘混合运算公式_职测解题技巧:数学运算的35个基础公式
  19. 华硕笔记本如何锁定计算机,华硕笔记本win10怎么快捷锁屏
  20. Android Pitfall - 扒一扒RadioGroup 和 RadioButton

热门文章

  1. 游戏服务端引擎(kbengine完整代码+demo源码)
  2. centos 6.2   为mysql5.6.10安装 HandlerSocket插件
  3. Python如何输出格式清晰的dict
  4. Directionally Localized Anti-Aliasing
  5. openbsd下实现双网卡负载均衡
  6. DHTML【4】--HTML
  7. mongodb 命令补充
  8. 字符串内置方法 第二弹
  9. MySQL中快速复制数据表方法汇总
  10. 【leetcode】杨辉三角Ⅱ