浙江理工大学2022年校赛C题

浙江理工大学2022年校赛C题

补题网址:http://acm.zstu.edu.cn/problem.php?id=4664

题意

n个(n <= 20)小朋友玩黑白配,每个小朋友都有自己的习惯(手掌向上的概率pi),每一轮如果有唯一一个小朋友和别人不一样(只有一个人手掌向上其他人手背向上,或者只有他手背向上其他人手掌向上),这个小朋友会被淘汰,游戏一直进行到只剩最后两个小朋友时停止。问游戏时长的期望。

分析

是概率期望的问题,首先简单地回顾一下概率怎么算。
有一枚硬币,抛到空中,落地后正反两面朝上的概率相等。X_X一直抛硬币直到正面朝上停止,问次数的期望。
这种失败后重新开始游戏的类型期望无法直接求得需要用方程求解。若硬币反面朝上又回回到起点,所以设期望为T,抛一次硬币有两种情况:50%正面朝上,花费1回合。50%反面朝上,花费一回合并且重新开始抛硬币。
T = 0.5 * 1 + 0.5 * (1 + T)
由此得到T = 2

回到C题,在某一轮游戏中如果没有人淘汰,则会重新开始本轮游戏,直到淘汰了某一个小朋友为止。所以,不同小朋友群体开始的游戏可以视作一次独立的游戏,因为最多20个小朋友,可以想到状态压缩共有 2^20 大约1e6 种状态。
在每一种状态下的可能情况有:某个小孩被淘汰了,进行对应下一个状态的游戏;没有人被淘汰再来一轮。
假设现在参与游戏的小朋友集合是s,从s中去除小朋友 i 写作 s ^ {i} ,小朋友 i 被淘汰的概率为p_i,从状态s到最后省两个小朋友的轮数期望为E(s)则
E(S) = 1 + p_1 E(S ^ {1}) + p_2 E(S ^ {2}) + … + (1 - sum p_i) E(S).
当s集合中只有两个小孩时游戏结束,此状态的期望为0。
所以只要算出s所有能转换到的子集的期望,就能解出方程算出E(s)
可以正常递归,记忆化搜索剪枝。

code

还没写hhhh

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值