HDU 5781 ATM Mechine
题目大意:某个未知整数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)次。这样,便大大减少了状态数目,使得上述方程能够得以实现。
输入:
1 1
4 2
20 3
输出:
1.000000
2.400000
4.523810
参考代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 2010
#define LL long long
double dp[maxn][maxn];
#define inf 0x3f3f3f3f
double getdp(int i,int j)
{
if(i==0)
return dp[i][0]=0;
if(j==0)
return dp[i][j]=inf;
if(dp[i][j]!=-1.0)
return dp[i][j];
double ans=inf;
for(int k=1;k<=i;k++)
{
ans=min(ans,(i+1-k)/(i+1.0)*getdp(i-k,j)+k/(i+1.0)*getdp(k-1,j-1)+1);
}
return dp[i][j]=ans;
}
int main()
{
int k,w;
for(int i=0;i<maxn;i++)
for(int j=0;j<maxn;j++)
dp[i][j]=-1.0;
while(~scanf("%d%d",&k,&w))
{
printf("%.6f\n",getdp(k,min(w,15)));
}
}
HDU 5781 ATM Mechine的更多相关文章
- HDU 5781 ATM Mechine 期望dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 ATM Mechine Time Limit: 6000/3000 MS (Java/Othe ...
- HDU 5781 ATM Mechine (概率DP)
ATM Mechine 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...
- hdu 5781 ATM Mechine dp
ATM Mechine 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...
- 【动态规划】HDU 5781 ATM Mechine
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 题目大意: 一个人有[0,K]内随机的钱,每次可以随意取,但是不知道什么时候取完,取钱超过剩余 ...
- 多校5 1001 HDU5781 ATM Mechine 记忆化搜索+概率
// 多校5 1001 HDU5781 ATM Mechine // http://acm.hdu.edu.cn/search.php?field=problem&key=2016+Multi ...
- 2016 Multi-University Training Contest 5 ATM Mechine
ATM Mechine 本文转自:http://blog.csdn.net/queuelovestack/article/details/52096337 题意: 这题的意思还是比较费解的 Alice ...
- hdu-5781 ATM Mechine(dp+概率期望)
题目链接: ATM Mechine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU5781 ATM Mechine(DP 期望)
应该是machine 和POJ3783 Balls类型相似. 现在上界为i元,猜错次数最多为j时,开始猜测为k元,有两种情况: 1 猜中:(i - k + 1) * dp[i - k][j] 2 猜不 ...
- HDU-5781 ATM Mechine(概率DP)
题目大意:某个未知整数x等概率的分布在[0,k]中.每次你都可以从这个整数中减去一个任意整数y,如果x>=y,那么x=x-y,操作次数累计加1:否则,将会受到一次错误提示.当错误提示超过w次,将 ...
随机推荐
- Visual Studio® 2010 Web Deployment Projects站点编译生成bin同时发表插件
VS2010环境下: 1.Visual Studio® 2010 Web Deployment Projects下载地址: http://www.microsoft.com/downlo ...
- 文件上传利器SWFUpload使用指南(转)
http://www.cnblogs.com/2050/archive/2012/08/29/2662932.html 文件上传利器SWFUpload使用指南 SWFUpload是一个flash和js ...
- Visual Studio常用的快捷键
每次在网上搜关于VS有哪些常用快捷键的时候,出来的永远是一串长的不能再长的列表,完全没体现出“常用”二字,每次看完前面几个就看不下去了,相信大家都 有这种感觉.其实我们平时用的真的只有很少的一部分 ...
- 百度搜索附近加盟店等基于LBS云搜索功能的实现
一.注册百度账号,进入开发者平台 创建应用并获取ak 地址如下 http://lbsyun.baidu.com/apiconsole/key/update?app-id=7546025 ok获取到了. ...
- 《JavaScript 闯关记》之表达式和运算符
表达式 表达式是由数字.运算符.数字分组符号(如括号).自由变量和约束变量等以能求得数值的有意义排列方法所得的组合.JavaScript 表达式主要有以下几种形式: 原始表达式:常量.变量.保留字. ...
- 查看Android数据库文件
使用Eclipse DDMS的File Explorer不能能看到Data目录下面的东西,可能由下面原因引起的 手机没有Root -- 可以使用Root大师 Data文件权限不够 -- 可以使用Ro ...
- java poi 导入excel
最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包 http://pan.baidu.com/s/1sjPuWDR pack ...
- MongoDB的save 和insert函数的区别
mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别: 一.使用save函数里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果 ...
- Git commit template 模板设定
多人协作开发一个项目时,版本控制工具是少不了的,git是linux 内核开发时引入的一个优秀代码管理工具,利用它能很好使团队协作完成一个项目.为了规范团队的代码提交,也方便出版本时的release n ...
- [汇编语言]-debug跟踪执行
ffff:0-ffff:d内存中数值求和放入dx寄存器中 代码: add.asm assume cs:code code segment mov ax,0ffffH mov ds,ax mov dx, ...