hdu 4562 Dice 求期望 推数学公式 (2013多校联合)

很早就A了这题, 不过个人感觉概率和期望的题没有做过题, 然后狠狠地刷了一个列表。现在回过头来一起整理这一类型的题。


这题的状态转移方程应该是很好推的吧,如果推不出方程,那也不用担心,多做点求期望的题就有感觉了。


设dp[i]表示当前在 已经投掷出 i个 不相同/相同 这个状态时期望还需要投掷多少次。然后dp[0]就是答案


相同的情况:
    dp[0] = 1 + dp[1]
    dp[1] = 1 + ( (m-1)*dp[1] + dp[2] ) / m
    dp[i]  = 1 + ( (m-1)*dp[1] + dp[i+1] ) / m
    ...
    dp[n] = 0;

我们拿出i和i+1项来
dp[i]     = 1 + ( (m-1)*dp[1] + dp[i+1] ) / m
dp[i+1] = 1 + ( (m-1)*dp[1] + dp[i+2] ) / m

上下相减得 :m * (dp[i] - dp[i+1]) = dp[i+1] - dp[i+2];

令 d[i] = dp[i] - dp[i+1]; 则d[]为公比为m的等比数列, 且d[0] = 1;

所以d[i] = m^i, 然后由列项相消得 dp[0] - dp[i+1] = m^0+m^1+.....+m^i;

令i+1 = n 则 dp[0] = m^0+m^1+.....+m^(n-1);



不相同的情况:
    dp[0] = 1 + dp[1]
    dp[1] = 1 + (dp[1] + (m-1) dp[2]) / m
    dp[2] = 1 + (dp[1] + dp[2] + (m-2) dp[3]) / m
    dp[i] = 1 + (dp[1] + dp[2] + ... dp[i] + (m-i)*dp[i+1]) / m
    ...
    dp[n] = 0;

跟相同的情况一样,选出 dp[i] 和 dp[i+1] 这两行相减 得

dp[i] - dp[i+1] = (m-i-1)/m * (dp[i+1] - dp[i+2]); 

令 d[i] = dp[i] - dp[i+1]. 则 d[i] =  (m-i-1)/m  * d[i+1], 且d[0] = 1;

这个公式看上去跟相同时的情况差不多,不过不能往下化简了

但我们可以根据这个递推关系式 求出每个d[i], 

然后再 对其列项相消 就可以发现 dp[0] = d[0] + d[1] + d[2] + ..... + d[n-1];

套这两个公式,代码很短就能AC了, 所以代码也不给出了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值