洛谷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)

原文地址:https://www.cnblogs.com/YjmStr/p/15428911.html