开始日常 AtCoder 的 ABC 场以外题解(不咕咕咕的话。
A Regular Triangle
B Red or Blue
C Snuke the Wizard
给定一个长度为 $n$ 的一排房间,每个房间有个字母,一开始每个房间只有一个人。
之后有 $q$ 次操作,每次操作将待在所有房间字母为 $s_i$ 的房间内的所有人,向左或右平移一个格子。
若移动到最左边和最右边之外,这个人就没得了,求最后剩多少人。
注意到,人是一个格子一个格子平移的,不会有人跨越的现象。
因此掉落到左边一定是一个前缀,掉到右边的一定是一个后缀,二分前缀和后缀的长度即可。
降智严重,sb 二分竟然没想到。
D Modulo Operations
好题!
给定一个数字 $x$,有一个集合 $S$,每次随机从集合内删除一个数 $y$,将当前数字 $x$ 变成 $x$ mod $y$。
求将集合删光时,当前数字的期望。
注意到,每次都是取模操作,所以当前数字一定是单调不增的。其次,若一开始选了一个比较小的数字,则后面可以任意选择较大的数而不会产生影响。
这就等价于,给定一个单调递减的操作序列 $S$,对于第 $i$ 个操作,有 $1 \over n-i+1$ 的概率,对当前数取模。
对于已经进行过的 $i-1$ 次操作,每个数都有一个出现的概率,于是我们考虑第 $i$ 个数对于每个概率的影响,若选了这个数,进行这个操作,反之代表这个数会进行之后的操作。
也就是对于 $f(i,x)$ 表示进行到第 $i$ 次操作时,当前数为 $x$ 的概率,有转移方程
$$
f(i,x \text{ mod } a_i)=f(i-1,x) \cdot {1 \over n-i+1} \
f(i,x) = f(i-1,x) \cdot (1 - {1 \over n-i+1})
$$
显然只要操作序列单调递减,上述转移正确;若操作序列不单调递减,则会在某一个上升处,这个位置的数对概率的影响并没有计算到。