zoukankan      html  css  js  c++  java
  • CF1349D

    • (n) 个人, 第 (i) 个人有 (a_i) 个饼干。
    • 每次随机选择一个饼干, 将其随机分配给除了它现在所有者的其他 (n-1) 个人。
    • 求使得一个人拥有所有饼干的期望步数,对 (998244353) 取模。

    (nle 10^5,sum a_ile 3cdot 10^5)

    ( m Sol:)

    这道题好像非常仙。感觉没法做。

    (P_x) 表示最后饼干停留在 (x) 人上的概率。

    (E_x) 表示第一次所有饼干停留在 (x) 上的期望步数乘以概率。

    (E_x') 表示当且仅当饼干停留在 (x) 上游戏才结束此意义下的期望。

    那么有:

    [sum P_x=1 ]

    答案为:

    [sum E_x ]

    (C) 为将全部饼干由一个人手中转移到另一个人手中的期望步数,那么我们有恒等式:

    [E_x'=E_x+sum_{i e x} (E_i+P_icdot C) ]

    表示最终停留在 (E_x') 的概率有且仅有:

    • 直接停留在 (x)
    • 停留在 (i) 处,然后转移到 (x) 处。
    • 注意到 (E_i) 附带了概率,所以仅有 (C) 要乘以 (P_i)

    所以我们有:

    [E_x=E_x'-sum_{i e x}(E_i+P_icdot C) ]

    所求为:

    [egin{aligned} &sum E_x \&=sum igg(E_x'-sum_{i e x}(E_i+P_icdot C)igg) \&=sum E_x' -(n-1)sum E_i-(n-1)sum P_icdot C end{aligned}]

    所以我们得到:

    [ncdot sum E_x=sum E_x'-(n-1)cdot Csum P_i ]

    注意到 (sum P_i=1),设 (A=sum E_x'),那么所求为:

    [frac{A-(n-1)cdot C}{n} ]

    于是我们只需要求解 (E_x')(C)

    (f_i) 表示当前有 (i) 个饼干在目标人手上期望需要多少步才能得到 (i+1) 个饼干,(m) 为饼干总数。

    得到转移:

    对于 (m>ige 1)

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

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

    对于 (i=0)

    [f_0=1+frac{n-2}{n-1}f_0 o f_0=n-1 ]

    于是对于 (E_x'),我们容易得到其为 (sum_{ige x} f_i),同时 (f_i) 可以直接递推。

    同时,显然有 (C=sum_{ige 0} f_i)

  • 相关阅读:
    docker运行爬虫代码
    python语法之流程控制(if while for)
    python基本数据类型
    python基本运算符
    python用户交互与格式化输出
    jieba模块基本介绍
    wordcloud库基本介绍
    计算机基础之编程语言
    计算机基础
    python入门之流程控制
  • 原文地址:https://www.cnblogs.com/Soulist/p/13656522.html
Copyright © 2011-2022 走看看