QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: xcx0902

Posted at: 2026-04-16 19:37:14

Last updated: 2026-04-16 19:37:17

Back to Problem

New Editorial for Problem #967

下文令 $V=2\times 10^5$。

将问题转化为:对于 $x=0,1,\dots,V$ 一开始有一个集合 $S_x=\{0,1,2,\dots,V+1\}$。操作 $(y,l,r)$ 即对所有 $l\le i\le r$ 删除 $S_i$ 中的 $y$ 元素。查询 $(l,r)$ 即回答 $\max_{i=l}^r \min S_i$。

对于每一种 $y$,将 $(l,r)$ 拆开变成若干与之前的修改不交区间(可以使用 ODT 完成)。这一步是为了让后面的修改不会出现问题。用线段树维护集合。具体地,线段树上节点 $[l,r]$ 维护 $S_l \cap \dots \cap S_r$。操作 $(y,L,R)$ 时,如果遇到未完全包含 $[L,R]$ 的节点,就把这个节点对应集合中的 $y$ 删除,并插入子节点的集合,同时将子节点的答案对 $y$ 取较小值。如果遇到完全包含的节点,就直接把 $y$ 删除。上传答案时,先继承子节点答案的最大值,再与当前节点的 $\min S$ 取最小值。查询时的信息合并类似。

Comments

No comments yet.