题目大意:有编号为0-n的格子,从0开始,扔骰子扔到几就走几格。有m个瞬移点,每个点可以从格x直接飞到格y,若瞬移到另一个瞬移点可以继续瞬移。求到达格n的期望扔骰子次数。

题解:期望DP入门好题。网上神犇们都说,“经验表明,一般情况下,求期望的题从后往前推。”本蒟蒻一开始不明白,谁给你的权利一定要从后往前啊!于是我就写了这样一个式子:

E(i)——到格i期望,E(i)=i是某个瞬移目标点?(E(x),x指瞬移出发点),否则E(i-1)*1/6+E(i-2)*1/6+...+E(i-6)*1/6+1,注意最后把“又走了一步”加上。标准全期望公式。于是高高兴兴地通过了第一组数据。然后测试第二组。。。。。。那么问题究竟出在哪里呢?

问题一:若i是瞬移目标点,在平均的情况下,凭什么一定认为到达i的情况和到达i对应的出发点的情况完全一样?显然

在上图情况中,0到2的所有方法并不对应到5的所有方法。如果按原先的思路,那么0->3->5等的情况将被无情地忽略。

问题二:i格走到后面1-6格的概率为1/6,不!能!认!为!i格前1-6格走到i的概率为1/6。虽然在m=0的时候这两者碰巧等价了,但加入瞬移点后,到达一个格的方法多种多样,概率当然不尽相同,而一个格向前运行的概率是永恒的。

通往目标的路变幻莫测,而我们向前发展的步伐是永恒的。

言归正传,我们只能从目标退回来。E(i)——i格到n的期望,E(i)=E(i+1)*1/6+...+E(i+6)*1/6+1,边界是E(n),严格的,E(n),E(n+1),...,E(n+5)=0。E(0)即为所求。至于瞬移出发点,E(i)=E(go(i)),go(i)指瞬移到达点。虽然看起来跟之前差不多,但这样做无可厚非。

代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std; int n,m;
#define maxn 100011
int go[maxn];double E[maxn];
#define eof 1e-9
int main()
{
while (scanf("%d%d",&n,&m) && (n || m))
{
memset(go,,sizeof(go));
for (int i=;i<=m;i++)
{
int x,y;scanf("%d%d",&x,&y);
go[x]=y;
}
memset(E,,sizeof(E));
for (int i=n-;i>=;i--)
{
if (!go[i]) {for (int j=;j<=;j++) E[i]+=E[j+i]/6.0;E[i]+=;}
else E[i]=E[go[i]];
}
printf("%.4lf\n",E[]);
}
return ;
}

hdu4405:Aeroplane chess的更多相关文章

  1. HDU 4405:Aeroplane chess(概率DP入门)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Problem Description   Hzz loves ...

  2. 【HDU4405】Aeroplane chess [期望DP]

    Aeroplane chess Time Limit: 1 Sec  Memory Limit: 32 MB[Submit][Stataus][Discuss] Description Hzz lov ...

  3. HDU 4405: Aeroplane chess

    类型:概率DP 题意:一条直线下飞行棋,色子六个面等概率.同时存在一些飞机航线,到了某个点可以直接飞到后面的另一个点,可以连飞,保证一个点至多一条航线.求到达或者超过终点 所需要 掷色子的期望次数. ...

  4. HDU-4405 Aeroplane chess

    http://acm.hdu.edu.cn/showproblem.php?pid=4405 看了一下这个博客http://kicd.blog.163.com/blog/static/12696191 ...

  5. 刷题总结——Aeroplane chess(hdu4405)

    题目: Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 grids labele ...

  6. hdu4405 Aeroplane chess

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  7. hdu 4405 Aeroplane chess(简单概率dp 求期望)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. 【HDOJ】【4405】Aeroplane chess飞行棋

    概率DP/数学期望 kuangbin总结中的第4题 啊还是求期望嘛……(话说Aeroplane chess这个翻译怎么有种chinglish的赶脚……) 好像有点感觉了…… 首先不考虑直飞的情况: f ...

  9. hdu 4405 Aeroplane chess (概率DP)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. JDK NIO SelectionKey bug

    此bug项目中使用elasticSearch中出现的,原因是,nio事件选择器,在特性内核下以及jdk6版本中,出现不hold线程,死循环获取事件的bug,导致cup使用率过高: 此bug在官网已被修 ...

  2. Kotlin学习的一些心得

    1.工程manifest中的application节点有冲突时,添加 xmlns:tools="http://schemas.android.com/tools" tools:re ...

  3. 使用libsvm实现文本分类

    @Hcy(黄灿奕) 文本分类,首先它是分类问题,应该对应着分类过程的两个重要的步骤,一个是使用训练数据集训练分类器,另一个就是使用测试数据集来评价分类器的分类精度.然而,作为文本分类,它还具有文本这样 ...

  4. 机器学习在SAP Cloud for Customer中的应用

    关于机器学习这个话题,我相信我这个公众号1500多位关注者里,一定有很多朋友的水平比Jerry高得多.如果您看过我以前两篇文章,您就会发现,我对机器学习仅仅停留在会使用API的层面上. 使用Java程 ...

  5. docker的网络配置

    Docker的4种网络模式 我们在使用docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式: host模式:使用–net=host指定. c ...

  6. jeecms标签

    .@cms_content_list--新闻单页 [@cms_content channelId=' dateFormat='MM-dd' ] [#if tag_list?size>0] < ...

  7. 联玛客(W 笔试)

    纸质算法题 1. 输入数据:1.3.2.4.8... 输出数据:3.1.4.2.8... 找出规律,写出一个程序求解,并附上时间复杂度和空间复杂度 我的答案: 规律一:奇偶位互换 假设输入数据长度为5 ...

  8. HTTP隧道代理

    reGeorg的前身是2008年SensePost在BlackHat USA 2008 的 reDuh延伸与扩展.也是目 前安全从业人员使用最多,范围最广,支持多丰富的一款http隧道.从本质上讲,可 ...

  9. NetBeans 默认编码修改方法

    如果要NetBeans用UTF-8对文件进行解码,需要修改配置文件,具体方法如下: 1. 找到你的Netbeans安装目录下的etc文件夹,如D:\Program Files\NetBeans 8.2 ...

  10. python 与

    python的与运算是 and &表示的是位运算 c++则是& 和 &&