1 条题解
-
0
Ela 去远足:题解
记第 个初始位置的蚂蚁最终存活的概率为 ,并令
以下所有运算均在模 意义下进行。
思路
当 时,显然 。下面假设 。
最左侧蚂蚁不可能成为最终存活者,因此 。从运动过程可以得到如下关键结论:
-
最右侧蚂蚁存活,当且仅当决定它命运的 个独立方向选择均取到指定方向,因此
-
对 ,位置 的蚂蚁首先需要通过 个独立、等概率的方向条件;在这些条件成立后,唯一会阻止它存活的事件是最终存活者来自位置 。这些事件互斥,故
$$p_i=2^{-\lfloor(i+1)/2\rfloor} \left(1-\sum_{j=2i}^{n}p_j\right).$$若 ,括号内的和为空,视为 。
这个递推只依赖更大的下标。按 倒序计算,并维护后缀和 ,即可在常数时间内求出每个 :
$$p_i=2^{-\lfloor(i+1)/2\rfloor}(1-S_{2i}),\qquad S_i=S_{i+1}+p_i.$$做法
- 若 ,直接输出 。
- 否则令 ,按公式初始化 和 。
- 从 到 倒序枚举 。若 ,用已计算的 修正 ;随后更新 。
- 依次输出 到 。
正确性证明
下面证明算法输出的每个概率均正确。
引理 1:当 时,,且 。
由蚂蚁碰撞中“同重时向左者获胜”的规则,最左侧蚂蚁无法在仍有其他蚂蚁时赢得最终碰撞,所以 。对最右侧蚂蚁,沿其向左扩张的碰撞链,每隔一个初始位置产生一个独立的必要方向条件;共有 个,且每个成立概率为 ,故结论成立。
引理 2:对任意 ,
位置 的蚂蚁必须先满足 个独立方向条件,其概率为相应的 的负幂。条件成立后,位置小于 的其他蚂蚁都不能越过它成为最后存活者;失败恰好发生在最终存活者的初始位置至少为 时。最终存活位置唯一,所以这些失败事件互斥,总概率为 。将两部分相乘即得递推式。
定理:算法输出的 是各初始位置蚂蚁最终存活的概率。
算法先由引理 1 正确计算边界。随后按下标递减计算;求 时,所有 及所需后缀和已经正确。由引理 2,算得的 也正确。归纳可知所有输出均正确。
复杂度分析
每组测试的时间复杂度为 ,空间复杂度为 。所有测试的 之和不超过 。
-
- 1
信息
- ID
- 1333
- 时间
- 3000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者