如题。
登山计划
给定两个长为 \(n\) 的序列 \(a,b\),\(Q\) 次询问,给定 \(L,R,k\),求:
\[\min_{L \leq l \leq r \leq R \wedge r-l+1=k} |\min_{i=l}^{r} a_i- \min_{i=l}^{r} b_i| \]\(n \leq 2\times 10^5,Q \leq 5\times 10^5\)
不妨先思考若 \(L=1,R=n\) 怎么做。考虑分治。
对于当前分治中心 \(mid,mid+1\),记: \(la_i = min_{j=i}^{mid} a_j,ra_i = min_{j=mid+1}^{i} a_j,lb_i = min_{j=i}^{mid} b_j,rb_i = min_{j=mid+1}^{i} b_j\),
那么一段区间 \([l,r]\) 的答案可以描述为 \(|min(la_l,ra_r) - min(lb_l,rb_r)|\),由于前缀 min 单调不增,后缀 min 单调不减,转化为静态 RMQ 问题后不难 \(O(n\log^2 n)\) 求出。
而对于所有的 \(L,R\),考虑采用线段树分治的方式,给所有跨过对应分治中心 \(mid,mid+1\) 的节点都挂上这个询问。对于整的被覆盖的节点,上文已经在 \(O(n\log n)\) 内求出了所有答案。而对于没有被完全覆盖的节点,其计算答案和正常分治只有一些取值范围的差别,故我们可以直接调用分治时的信息 \(O(1)\) 求出。这样挂的节点数一共是 \(O(\log n)\) 的,回答是 \(O(1)\) 的,总复杂度 \(O(n \log^2 n+Q \log n)\)。
苦涩
你需要维护 \(n\) 个初始为空的可重集,支持一下三个操作:
- 对 \([l,r]\) 中的集合插入一个数 \(k\)。
- 记 \(x\) 为 \([l,r]\) 中所有可重集的所有数的最大值,对所有 \([l,r]\) 含有 \(x\) 的集合删去一个 \(x\)。
- 查询 \([l,r]\) 中所有可重集的所有数的最大值。
\(n,m \leq 10^5,k \leq 10^9\)
第二个删除的操作特别麻烦。