这不比 A 火?

YuJiahe

2024-11-18 16:22:50

Solution

这不比 A 火?这不比 A 火?这不比 A 火?这不比 A 火?

考虑每次加入一个 (A_i, B_i) 并动态维护答案。考虑维护 L(x) 表示右端点为 x 时左端点的最大值,那么 ans = \min\{x - L(x)\}。显然 L(x) 单调不降。

假设 A_i \le B_i,设加入 (A_i, B_i) 后的新的 L(x)L'(x),那么显然有:

L'(x) = \begin{cases} \min(B_i, L(x)) & B_i \le x\\ \min(A_i, L(x)) & A_i \le x < B_i\\ -\infty & x < A_i\\ \end{cases}

由于 L(x) 单调不降,所以区间取 \min 相当于区间推平,直接维护即可做到 O(n \log n)

具体地,维护该函数的极长连续段 (l, r, y) 的集合 S(即 x \in [l, r]L(x) = y),那么 ans = \min_{(l, r, y) \in S}\{l - y\}。颜色段均摊分析得出 S 最多变化 O(n) 次,同步维护 l - y 的集合即可。显然这是可以支持强制在线的。