• [概率期望][解方程][CF1349D]Slime and Biscuits


    • 题目传送门

    • 题意简述:(n) 个人,第 (i) 个人有 (a_i) 个饼干,每步等概率随机在 (m=sum_{i=1}^na_i) 个饼干中选一个,这个饼干的持有者会在剩下的 (n-1) 个人中,把饼干传给等概率随机的一个人,求期望多少步之后,某个人持有所有饼干,(2le nle 10^5)(mle 3 imes10^5)

    • 神题

    • 首先发现一点:如果结束的条件是某个已知的人持有所有饼干,那么问题会容易很多

    • (E_i) 表示最后所有饼干都在第 (i) 个人手上的所有情况的概率乘步数之和(不是期望)

    • (E'_i) 表示结束条件为所有饼干在都第 (i) 个人手上的情况下的期望步数

    • 显然有 (ans=sum_{i=1}^nE_i)

    • 考虑如何从 (E') 得到 (E),考虑从 (E_i) 中扣除掉游戏提前结束的情况

    • [E'_i=E_i-sum_{j e i}(E'_j+P_j imes C) ]

    • 其中 (P_i) 为最后 (i) 持有所有饼干的概率

    • 看上去还是不太好直接求出每个 (E'_i),但由于只需求所有 (E'_i) 的和,由 (sum_{i=1}^nP_i=1) 得到:

    • [sum_{i=1}^nE'_i=sum_{i=1}^n(E_i-sum_{j e i}(E'_j+P_j imes C))=sum_{i=1}^nE_i-(n-1)(C+sum_{i=1}^nE'_i) ]

    • [n imes ans=sum_{i=1}^nE_i-(n-1)C ]

    • (C) 表示所有饼干都在某个已知的人手上,全部转到另一个已知的人手上的期望步数

    • 考虑如何求 (E_i)(C),其实是一个东西:(f_i) 表示一个人手里有 (i) 个饼干,使这个人持有所有 (m) 个饼干的期望步数

    • (E_i=f_{a_i})(C=f_m)

    • (f) 的转移即为讨论下一步主角手里的饼干是加一减一或不变:

    • [f_m=0 ]

    • [f_i=frac imf_{i-1}+frac{(n-2)(m-i)}{(n-1)m}f_i+frac{m-i}{(n-1)m}f_{i+1}+1 ]

    • 可以链上高消,即把 (f_i)(af_{i+1}+b) 的形式表示之后回代

    • 注意消元的姿势,避免除以 (0)

    • (O(mlog mod))

  • 相关阅读:
    js 词法作用域揭秘
    Python 操作 Redis 发布订阅
    Logistic Regression
    快速逆平方根
    牛顿法
    Ubuntu安装BCC
    树莓派4b安装Ubuntu20.04
    丢弃法
    SpringBoot整合Redis
    Linear Regression
  • 原文地址:https://www.cnblogs.com/xyz32768/p/12925620.html
Copyright © 2020-2023  润新知