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

题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点。求走到n或超出n期望掷色子次数

分析:简单的题目,拿来入门很不错:

如果没有飞机的线 ,这题就是直接 dp[i]+=dp[i+x]/6 +1 了 ; 当前的期望由子期望相加 ; 那航线怎么考虑呢?一开始我以为是加上可以走到点的dp[v] ,可是仔细推敲这是不对了,在注意到航线的转移是不需要价值的,所以直接dp[u]=dp[v] 就好;为什么呢?很简单,例如: 7->8   , 因为8是可以直接由7来的,那8就继承7的期望

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int>G[];
  5. bool vis[];
  6. double dp[];
  7. int main()
  8. {
  9. int n,m;
  10. while(~scanf("%d%d",&n,&m))
  11. {
  12. if(n==&&m==) break;
  13. for(int i= ; i<=n ; i++)
  14. G[i].clear();
  15. for(int i= ; i<m ; i++)
  16. {
  17. int u,v;scanf("%d%d",&u,&v);
  18. G[v].push_back(u);
  19. }
  20. memset(dp,,sizeof(dp));
  21. memset(vis,,sizeof(vis));
  22.  
  23. for(int i= ; i<G[n].size() ; i++)
  24. {
  25. int v=G[n][i];
  26. dp[v]=;
  27. vis[v]=;
  28. }
  29. for(int i=n- ; i>= ; i--)
  30. {
  31. if(vis[i]==){
  32. for(int x= ; x<= ; x++)
  33. {
  34. dp[i]+=dp[i+x]/6.0;
  35. }
  36. dp[i]++;}
  37. for(int j= ; j<G[i].size() ; j++)
  38. {
  39. int v=G[i][j];
  40. dp[v]=dp[i];
  41. vis[v]=;
  42. }
  43. }
  44. printf("%.4lf\n",dp[]);
  45. }
  46. }
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <vector>
  5. using namespace std;
  6. #define N 100010
  7.  
  8. double dp[N];
  9. int nxt[N];
  10.  
  11. int main()
  12. {
  13. int n, m;
  14. while(~scanf("%d%d", &n, &m), n+m) {
  15. memset(nxt, -, sizeof(nxt));
  16. for(int i = ; i < m; i++) {
  17. int u, v;
  18. scanf("%d%d", &u, &v);
  19. nxt[u] = v;
  20. }
  21. memset(dp, , sizeof(dp));
  22. double dec = (double) / ;
  23. for(int i = n - ; i >= ; i--) {
  24. if(nxt[i] != -) {
  25. dp[i] = dp[nxt[i]]; //如果可以飞,就直接把上一步的值赋给它
  26. continue;
  27. }
  28. for(int j = ; j <= ; j++) {
  29. if(i + j <= n) {
  30. dp[i] += dp[i + j] * dec; //不能飞的话,就掷骰子为1-6的概率都为1/6,递推
  31. }
  32. }
  33. dp[i]++; //走到下一步要+1
  34. }
  35. printf("%.4f\n", dp[]);
  36. }
  37. return ;
  38. }

HDU4405 Aeroplane chess (概率DP,转移)的更多相关文章

  1. [hdu4405]Aeroplane chess(概率dp)

    题意:某人掷骰子,数轴上前进相应的步数,会有瞬移的情况,求从0到N所需要的期望投掷次数. 解题关键:期望dp的套路解法,一个状态可以转化为6个状态,则该状态的期望,可以由6个状态转化而来.再加上两个状 ...

  2. [ACM] hdu 4405 Aeroplane chess (概率DP)

    Aeroplane chess Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 ...

  3. HDU 4405 Aeroplane chess (概率DP)

    题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n ...

  4. HDU4405 Aeroplane chess(期望dp)

    题意 抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html 正在玩飞行棋.输入n,m表示飞行棋有n个格子,有m个飞行点,然后输入m对u,v表示 ...

  5. HDU 4405 Aeroplane chess 概率DP 难度:0

    http://acm.hdu.edu.cn/showproblem.php?pid=4405 明显,有飞机的时候不需要考虑骰子,一定是乘飞机更优 设E[i]为分数为i时还需要走的步数期望,j为某个可能 ...

  6. HDU 4405 Aeroplane chess(概率dp,数学期望)

    题目 http://kicd.blog.163.com/blog/static/126961911200910168335852/ 根据里面的例子,就可以很简单的写出来了,虽然我现在还是不是很理解为什 ...

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

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

  8. hdu4405 Aeroplane chess

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

  9. hdu 4405Aeroplane chess(概率DP)

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

随机推荐

  1. JAVA AOP面向切面编程与动态代理

    1.静态代理和动态代理的概念:   在我的另一篇博文:Java 静态代理和动态代理 中有讲到,这里就不做赘述了. JDK动态代理它的好处理是可以为我们生成任何一个接口的代理类,并将需要增强的方法织入到 ...

  2. 安全运维 - Windows系统维护

    Windows系统加固 账户管理和啊认证授权 日志配置操作 IP协议安全配置:启用SYN攻击保护 文件权限 服务安全 安全选项:启动安全选项.禁用未登录前关机 其他安全配置: 防病毒管理.设置屏幕保护 ...

  3. SpringBoot(九) -- SpringBoot与数据访问

    一.简介 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,xx ...

  4. 第九届蓝桥杯A组第三题: 乘积尾零

    标题:乘积尾零如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6 ...

  5. 小白学Python(13)——pyecharts 绘制 柱状图/条形图 Bar

    Bar-基本示例 from example.commons import Faker from pyecharts import options as opts from pyecharts.char ...

  6. Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板

    原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  7. JQ的异步文件上传

    一,view代码 <form role="form"> <div class="form-group"> <label for=& ...

  8. c#中decimal的去0显示

    在近来的开发中,遇到到了decimal中显示0的问题,搞了很久才搞好了,现在就简单介绍一下其中一小部分,其他的网上很上很多 public static string DecimalToString(d ...

  9. [转]使用flask实现mock server

    什么是mock server: http://www.testclass.net/interface/mock_server 使用flask 实现  mock server : http://www. ...

  10. python __str__repr__ 区别

    __str__ __repr__ 两个内置函数都是调试常用的函数, 对象直接调用时会调用 __repr__的内容, __str__需要print一下对象才可以 两个函数的内容有时会写成相同内容   _ ...