HDU 5781 ATM Mechine( 多校5 DP&期望+记忆化搜索)
来源:互联网 发布:h5页面分享到朋友圈js 编辑:程序博客网 时间:2024/05/19 11:48
题意:Alice忘记了自己银行里存了多少钱,只记得在[0,k]之间。每次取钱如果余额足够就出钱,否则警告一次,警告超过w次就会把你抓起来,在不想被警察抓起来的前提下,Alice采取最优策略,求期望取钱多少次能知道自己存了多少钱。
官方题解:
思路分析:上面等式中左边的一部分是取的数k不超过真实余额的概率,右面部分是取的存款k超过真实余额的概率。后面的+1代表本次操作,所以期望应该+1。
题目连接:
AC代码:
#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <cmath>using namespace std;typedef long long ll;typedef long long LL;const ll mod=1e9+7;const int maxn=2000+5;double dp[maxn][20];///dp[i][j]表示当前余额范围为0~i,剩余警告次数为jbool visit[maxn][20];///记忆化搜索double dfs(int k,int w){ if(k==0) return 0.000000;///结束递归的条件 if(w==0) return 1e12; if(visit[k][w]) return dp[k][w];///记忆化搜索 double tmp=1e12; for(int i=1;i<=k;i++)///从一开始枚举,找到最小的期望值 { tmp=min(tmp,(k+1-i)*dfs(k-i,w)/(k+1)+i*dfs(i-1,w-1)/(k+1)+1); } visit[k][w]=1; return dp[k][w]=tmp;}int main(){ int k,w; while(~scanf("%d%d",&k,&w)) { printf("%.6lf\n",dfs(k,min(12,w))); } return 0;}
0 0
- HDU 5781 ATM Mechine( 多校5 DP&期望+记忆化搜索)
- HDU-5781-ATM Mechine(记忆化搜索+期望)
- hdu 5781 ATM Mechine 概率(期望)dp
- HDU 5781--ATM Mechine(记忆化搜索+暴力)
- HDU 5781 ATM Mechine(概率DP求期望)
- HDU 5781 ATM Mechine (概率dp 求期望最小)
- HDU 5781 ATM Mechine 16多校5 概率dp
- HDU-5781-ATM Mechine-DP
- HDU 5781 ATM Mechine dp
- HDU 5781 ATM Mechine (概率dp)(求最优策略期望)
- Hdu-5781 ATM Mechine(DP)
- 【HDU 5781】ATM Mechine(概率DP)
- HDU 5781 ATM Mechine(概率DP)
- HDU 5781 ATM Mechine 多校赛 概率dp
- HDU 5781 ATM Mechine (概率DP)
- HDU 5781 ATM Mechine(概率dp)
- HDU 5781 ATM Mechine(dp)
- [HDU 5781] ATM Mechine (带有最优的期望)
- lintcode insert-node-in-a-binary-search-tree 在二叉查找树中插入节点
- 排序算法一览(上):交换类、选择类和插入类排序
- mybatis中 大于小于的写法
- bing87496988 ~ onvif笔记~~soap编程流程
- swift使用FMDB数据库增删改查
- HDU 5781 ATM Mechine( 多校5 DP&期望+记忆化搜索)
- 2015 偶数求和
- 一个简单的AsyncTast小例子
- unix系列设备驱动(字符设备驱动) 学习
- sdfasdfsdfa
- composer的安装使用
- MySQL---语句大全
- 12c环境中的cdb与pdb
- OpenGL es 封装shader载入编译链接