浙江理工大学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