QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: Milmon

Posted at: 2026-02-26 20:06:19

Last updated: 2026-02-26 20:06:27

Back to Problem

题解

使用单侧递归线段树解决此题。

线段树上每个结点额外维护以左子树最大值为初始值遍历右子树的操作次数。下放这个标记需要在右子树进行一遍模拟操作,每一层只会往一棵子树递归,时间复杂度为 $\mathcal{O}(\log N)$。

对于第一种操作,拆出的 $\mathcal{O}(\log N)$ 个定位区间都要执行一次 $\mathcal{O}(\log N)$ 的模拟操作,但是由于原先有的右子树操作标记不影响这个过程,所以操作过程中可以只下放区间加标记。时间复杂度为 $\mathcal{O}(\log^2 N)$。

对于后两种操作,操作过程中都需要下放右子树操作标记,但是由于只有区间操作,所以时间复杂度也是 $\mathcal{O}(\log^2 N)$。

总时间复杂度为 $\mathcal{O}(N \log N + Q \log^2 N)$。

Comments

No comments yet.