zoukankan      html  css  js  c++  java
  • 洛谷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)

  • 相关阅读:
    64_l2
    64_l1
    64_k2
    64_k1
    64_j2
    64_j1
    64_g6
    64_g5
    64_g4
    64_g3
  • 原文地址:https://www.cnblogs.com/YjmStr/p/15428911.html
Copyright © 2011-2022 走看看