• AGC007C Pushing Balls —— 期望的神题


    Problem Link

    题意: 序列上按顺序交错有 n" role="presentation">n 个球和 n+1" role="presentation">n+1 个洞,即 hole1,ball1,hole2,ball2,,balln,holen+1" role="presentation">hole1,ball1,hole2,ball2,,balln,holen+1,相邻两个位置的距离形成一个首项为 s" role="presentation">s 公差为 d" role="presentation">d 的等差数列,接下来有 n" role="presentation">n 次操作,每次操作会随机选一个球并将其随机向左推或向右推。容易发现最后每个球都会滚进一个洞中。求所有球滚动的总距离的期望。

    发现 1:所谓的等差数列可以转化为每个距离都相同。

    注意到对于任意一种推球的方式,考虑与它恰好对称的推球方式,可以发现,对于每个球来说,它们在两次推球的过程中走过距离的平均值为一定值 s+(n1)/2d" role="presentation">s+(n1)/2d!于是可以认为每相邻两个位置的距离均为此定值。

    发现 2:对于各种情况,可以将每个位置的距离取期望后再进行计算。

    注意到总期望距离可认为 statepstatediti=iE[i]ti" role="presentation">statepstatediti=iE[i]ti,其中 ti" role="presentation">ti 为每个状态中 i" role="presentation">i 被覆盖的次数,pstate" role="presentation">pstate 为状态 state" role="presentation">state 出现的概率,di" role="presentation">di 为该状态中空隙 i" role="presentation">i 的距离。于是这个距离可以期望化。

    通过以上两个发现,可以注意到每次操作后仍然可以转化为每个空隙都有一个期望,发现除了首尾以外所有空隙期望长度均相同,且首尾两个空隙平均下来也是对的,就可以视为所有位置长度都相同,随便推推狮子即可。

    时间复杂度 O(n)" role="presentation">O(n)

    本题两个发现可谓精妙绝伦啊~~~

  • 相关阅读:
    Linux基本命令
    Python子进程管理与进程信息获取
    关于我博客付费专栏:写给粉丝的致歉信
    http中get和post怎么选
    2023年中国人防服务需求现状及行业市场规模前景分析[图]
    Maven学习笔记(十三)-maven-dependency-plugin插件
    R 语言降维的 PCA 与自动编码器
    全网最全谷粒商城记录_08、环境-linux安装docker
    C# Onnx PP-HumanSeg 人像分割
    onps栈移植说明(2)——编译器及os适配层移植
  • 原文地址:https://www.cnblogs.com/Charlie-Vinnie/p/16881628.html