HDU5781 ATM Mechine [概率dp]
来源:互联网 发布:python编写程序化交易 编辑:程序博客网 时间:2024/06/07 07:34
题意:一个人去ATM取钱,知道钱最多有n, 她最多能尝试m次,问如果她足够机智,把所有钱都去做的期望次数是多少。(n <= 2000)
思路:由于足够聪明,二分取钱最坏的情况下只需要11次即可取走所有的钱。 所以预处理m = min(m, 12);
定义状态:dp[i][j]表示已知当前钱数的最大上限为i,还能够取钱的次数为j时候的期望。
决策:尝试取k元钱,k能够被取走的概率为
边界条件:
记忆化搜索实现代码:
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<bitset>#include<algorithm>#include<map>#include<set>#include<queue>#include<vector>#include<cstdlib>#include<list>#include<stack>#include<cmath>#include<iomanip>using namespace std;typedef long long LL;double E[2005][15];double getE(int i, int j){ if(i == 0) return 0; if(j == 0) return 999999.99; double ans = 9999999.99; if(E[i][j]) return E[i][j]; for(int k = 1; k <= i; ++k) { ans = min(ans, getE(i-k, j)*(double)(i+1-k)/(i+1) + getE(k-1, j-1)*(double)k/(i+1) + 1); } E[i][j] = ans; return ans;}int main(){ ios::sync_with_stdio(false); #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); #endif // ONLINE_JUDGE int n, k; while(cin >> n >> k) { if(k > 15) k = 15; cout.setf(ios::fixed); cout << fixed << setprecision(6) << getE(n, k) << endl; } return 0;}
阅读全文
0 0
- hdu5781-ATM Mechine 概率DP
- hdu5781 ATM Mechine 概率dp
- HDU5781 ATM Mechine [概率dp]
- hdu5781 多校5 ATM Mechine【概率dp】
- HDU5781 ATM Mechine (概率dp)
- hdu5781[ATM Mechine] 浅尝期望概率DP
- HDU5781 ATM Mechine
- HDU5781 ATM Mechine
- HDU5781 ATM Mechine
- 【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 16多校5 概率dp
- Spring bean
- leakcanary使用
- 面试必问-几种线程安全的Map解析
- Reverse Integer
- Spring的核心模块解析
- HDU5781 ATM Mechine [概率dp]
- 你必须了解Spring的生态
- PhpStorm-2017.1.4破解方法(目前可用)
- Java开发必知道的国外10大网站
- poj 3436 ACM Computer Factory
- android关于截屏分享,支持Activity、ScrollView、ListView、RecyclerView、View
- UVA--10600---ACM Contest and Blackout
- 关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?
- 【转载】--FTP服务搭建