ABC270Ex

时间:2022-09-29
本文章向大家介绍ABC270Ex,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

给定 \(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)\)

原文地址:https://www.cnblogs.com/moyujiang/p/16743105.html