HDU-5781-ATM Mechine(记忆化搜索+期望)

来源:互联网 发布:香港天文台软件 编辑:程序博客网 时间:2024/05/06 20:27

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5781

题意:

ATM机里取钱,不提供查询余额的功能,只知道钱的上限K,每次都要取一定的钱Y,如果存款>=Y,就得到Y元钱, 如果取的钱超过了余额,警告1次,求在最优策略下,取的钱上限是K,警告次数不超过W取钱次数期望最小是多少。

题解:


#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fconst double eps = 1e-7;const int maxn = 2010;const int mod =  1e9+7;double dp[maxn][15];double DP(int k, int w){    if(w<0)return INF;    if(k==0)return dp[k][w]=0.0;    if(dp[k][w]>eps)return dp[k][w];    dp[k][w]=INF;    for(int i=1; i<=k; ++i)        dp[k][w]=min(dp[k][w], 1.0*(k-i+1)/(k+1)*DP(k-i,w) + 1.0*i/(k+1)*DP(i-1,w-1) + 1);    return dp[k][w];}int main(){    int k,w;    while(~scanf("%d%d",&k,&w))    {        w=min(w,13);        printf("%.6lf\n",DP(k,w));    }    return 0;}/**/


0 0
原创粉丝点击