QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: Milmon

Posted at: 2026-03-31 16:25:51

Last updated: 2026-03-31 16:25:58

Back to Problem

题解

记模数 $P = 10^9 + 7$。注意到若当前值 $x \geq P$ 并且下一个 $b_i \neq 1$,那么总是选择 $\times b_i$;若当前值 $x < P$ 并且下一个 $b_i = 1$,那么选择 $+a_i$ 一定不劣。按照如下流程执行:

  • 若 $x = 0$ 那么找到下一个 $a_i > 0$ 的位置并操作。
  • 此时 $x > 0$,每次遇到 $b_i > 1$ 都至少翻倍,暴力地不断找到下一个 $b_i > 1$ 的位置并操作,中间 $+a_i$ 的贡献可以通过前缀和计算,不断重复直到当前值 $\geq P$ 为止。
  • 剩下所有操作均按照 $b_i = 1$ 时 $+a_i$ 否则 $\times b_i$ 的规则处理,只需要预处理这个函数的前缀复合即可快速计算。

所有找到下一个符合条件的位置均可以预处理。总时间复杂度为 $\mathcal{O}(n + q \log P)$。

Comments

No comments yet.