给定 $0=a_1\leq a_2\leq \cdots \leq a_n\leq 10^{18}$,$a_n>0$。初始有 $n$ 个均为 $0$ 的计数器 $c_{1\cdots n}$,每次操作均匀随机一个 $1\leq i\leq n$,然后令 $c_i=0$,并把其它 $c$ 都加一。不断执行操作直到对于每个 $i$ 都满足 $c_i\ge a_i$,求期望操作次数,$\bmod 998244353$。

$2\leq n\leq 2\times 10^5$。

终止条件显然等价于对于每个 $i$,距离上一次操作 $i$ 已经再进行了至少 $a_i$ 次操作。于是可以转化为有一个变量 $x$,意义为当前最大的 $a_i-c_i$,初始值为 $a_n$,则操作等价于每次随机一个 $i$,令 $x\gets \max\{x-1,a_i\}$,直到 $x=0$。

暴力地,记 $f_i$ 表示 $x$ 从 $i$ 到 $i-1$ 的期望操作次数,则 $f_i=1+\frac{1}{n}(\sum_{a_k\ge i} f_{i\sim a_k})$,额外统计 $a_k=i$ 的个数并移项除回去即可。

发现 $i\in(a_{k-1},a_{k}]$ 里的转移是类似的,另设 $F_k$ 表示 $x$ 从 $a_k$ 到 $a_{k-1}$ 的期望操作次数,转移仍然先考虑一格一格地进行:$x\in(a_{k-1},a_{k}]$,假设 $a_{j\sim i}$ 的值都相等,一起转移它们的 $F_k$,令 $f_i$ 为初始为 $a_k$,到达 $i$ 的期望操作次数,则:

$$ f_x=f_{x+1}+1+\frac{1}{n}\left((n-j+1)\sum f_{x}+\sum_{a_k>a_i}{F_{i+1\sim k}}\right) $$

默认转移这一段时 $f_{a_k+1}=0$,转移完成后更新 $F$。

$f$ 的单步转移容易写成 $X\gets A\times X+B$ 的形式,找到通项之后快速幂,类似同一场的 G。

$O(n\log V)$。

最后修改:2022 年 09 月 29 日
如果觉得我的文章对你有用,请随意赞赏