题目大意:某个未知整数x等概率的分布在[0,k]中。每次你都可以从这个整数中减去一个任意整数y,如果x>=y,那么x=x-y,操作次数累计加1;否则,将会受到一次错误提示。当错误提示超过w次,将会对你的人生产生影响。现在,你的任务是将x逐步变为0,求最少操作次数的期望值。
题目分析:概率DP求期望。定义状态dp(k,w)表示整数分布在[0,k],错误提示次数上限为w时的最少操作次数的期望。
则dp(k,w)=min(p1*dp(k-y,w)+p2*(y-1,w-1))+1,其中p1、p2分别为k>=y、k<y的概率,p1=(k-y+1)/(k+1)、p2=y/(k+1)。因为你非常聪明,所以你每次都会二分的选择要减掉的整数y。根据题目的数据规模,你最多会操作log2(k)+1次,所以你被错误提示的次数最多log2(k)次。这样,便大大减少了状态数目,使得上述方程能够得以实现。

参考代码:

# include<bits/stdc++.h>
using namespace std;const int N=2000;
const double inf=1e9;double dp[N+5][13];void init()
{for(int i=0;i<=12;++i)dp[0][i]=0;for(int i=1;i<=N;++i)for(int j=0;j<=12;++j) dp[i][j]=inf;for(int i=1;i<=N;++i) for(int j=1;j<=12;++j)for(int k=1;k<=i;++k)dp[i][j]=min(dp[i][j],1.0*(i-k+1)/(i+1)*dp[i-k][j]+1.0*k/(i+1)*dp[k-1][j-1]+1.0);
}int main()
{init();int k,w;while(~scanf("%d%d",&k,&w)){w=min(w,12);printf("%.6lf\n",dp[k][w]);}return 0;
}

  

  

  

转载于:https://www.cnblogs.com/20143605--pcx/p/5743321.html

HDU-5781 ATM Mechine(概率DP)相关推荐

  1. HDU 5781 ATM Mechine(概率dp)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5781 题意: Alice要去取钱,可是她忘记有多少钱了,只知道在[0,k]的范围之内,她每次可以选择 ...

  2. HDU 4035 Maze(树形概率DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意:一棵树,从结点1出发,在每个结点 i 都有3种可能:(1)回到结点1 , 概率 Ki:(2 ...

  3. HDU 2955 Robberies(概率DP,01背包)题解

    题意:给出规定的最高被抓概率m,银行数量n,然后给出每个银行被抓概率和钱,问你不超过m最多能拿多少钱 思路:一道好像能直接01背包的题,但是有些不同.按照以往的逻辑,dp[i]都是代表i代价能拿的最高 ...

  4. HDU 5378 树上的概率DP Leader in Tree Land

    官方题解: 可以用求概率的思想来解决这个问题.令以i号节点为根的子树为第i棵子树,设这颗子树恰好有sz[i]个点.那么第i个点是第i棵子树最大值的概率为1/sz[i],不是最大值的概率为(sz[i]- ...

  5. HDU 3853 LOOPS(概率DP)

    题目链接:点击打开链接 题意:求从(1, 1)点走到(n, m)点的花费能量的期望, 每次决策消耗2点能量. 每次可以原地不动或者向右或者向下, 分别有个概率. 思路:运用全概率期望公式, d[i][ ...

  6. HDU 4418 高斯消元法求概率DP

    把两种状态化成2*n-2的一条线上的一种状态即可.很容易想到. 高斯列主元法,不知为什么WA.要上课了,不玩了...逃了一次课呢.. #include <iostream> #includ ...

  7. hdu-5781 ATM Mechine(dp+概率期望)

    题目链接: ATM Mechine Time Limit: 6000/3000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Other ...

  8. 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, ...

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

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

  10. hdu 3853 LOOPS 概率DP

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

最新文章

  1. 常用数据库优化方案(三)
  2. 【转】ABP源码分析十七:DTO 自动校验的实现
  3. 技术总结:图算法、开源工具及其在工业界的应用场景概述
  4. Spring Boot 页面国际化
  5. 1.3 编程基础之算术表达式与顺序执行 08 温度表达转化
  6. Typescript 学习笔记一:介绍、安装、编译
  7. android 自定义emoji表情包,emoji表情制作
  8. el-dialog可拖拽
  9. 《机械制造技术基础》常见的问题
  10. 厘米和磅的转换程序python_在Python中如何将磅转换成公斤
  11. translate()方法
  12. 国外android大神博客,Android手机浏览器(国外篇)横向对比评测
  13. 胆囊结石的危害你了解多少?
  14. TensorRT:NvInfer.h-上篇
  15. XAMPP的MySQL配置
  16. Echarts实现3d 地图实现飞线效果
  17. 从“女记者”到“地产一姐”,龙湖吴亚军的“三不”人生
  18. Python开发游戏的正确姿势
  19. 如何在Windows10系统中修改.jar文件的默认应用
  20. 可旋转的汽车3D模型效果的实现

热门文章

  1. 2011北理机试题——层次关系
  2. 【浙江大学PAT真题练习乙级】1002 写出这个数(20分) 真题解析
  3. BZOJ1468Tree——点分治
  4. [转]CString类型的头文件、CString的输出、CString的常用用法
  5. Outlook2016中如何实现自动密送
  6. ORACLE与.NET类型对应关系(转)
  7. C 语言中的指针和内存泄漏
  8. 博客园 使用锚和书签制作目录
  9. TensorRTSamplePython[end_to_end_tensorflow_mnist]
  10. docker 部署 zookeeper+kafka 集群