• 洛谷P4550 收集邮票 期望dp


    学弟问的题

    问题是:为什么题解区第一篇 走回自己以后代价是f[i]+1

    只考虑剩下的(n-i)种邮票取完的期望价格,这是整个问题的子问题

    (x)种时,我们只考虑这个规模为(x)的子问题,取完这种假如花了(k)步。

    那么剩(x+1)种时,其有((n-x-1)/n)的概率转换为“做完规模为(x)的子问题 再多走了一步”,步数是(k+1)

    ((x+1)/n)的概率转换为"做完规模为(x+1)的子问题 还要多走一步 继续做同一个子问题"

    对于每一个可能的(k),都有唯一的一个(k+1)与其对应,因此(g[n-x-1]=(g[n-x]+1+f[n-x])*(n-x-1)/n)

    这个(f[n-x])相当于所有可能的(k)乘上其出现的概率之和 (期望的定义)

    [f=sum_{k}p(k) imes k ]

    [sum_kp(k) imes (k+1)=1+sum_{k}p(k) imes k = 1+f ]

    根据上面

    假设剩(i)​种邮票未取过,取完它们的期望代价为(dp[i])​​,期望步数是(f[i])​​

    那么

    (dp[i] = (1 + dp[i-1] + f[i-1]) imes frac{i}{n}+ (1+dp[i] + f[i]) imes frac{n-i}{n})

    (f[i] = (1 + f[i-1]) imes frac{i}{n} + (1 + f[i]) imes frac{n-i}{n})

    f[i] = 1.0*n/(1.0*i)+f[i-1];		
    dp[i] = (dp[i-1]+f[i-1])+((n-i)*1.0)/(i*1.0)*f[i]+(1.0*n)/(1.0*i);
    

    答案是(dp[n])

    边界(dp[0]=0, f[0]=0, f[1]=1)

  • 相关阅读:
    Ubuntu 14.04 apt-get update失效解决(转)
    linux内核动态调试技术
    Ubuntu18.04开机挂载硬盘
    valgrind memcheck使用方法及效果(转)
    网络测试工具netperf(转)
    开发pc端项目可支持多个窗口登陆
    sql常用语句
    包装类和基础类的区别
    @param
    前台后台的顺序
  • 原文地址:https://www.cnblogs.com/YjmStr/p/15428911.html
Copyright © 2020-2023  润新知