2026.7.15 模拟赛
总览
\(100+50+20 \to 0+35+10\)。
T1
给定一张 \(n\) 个点,\(m\) 条边的无向简单图,每个节点上有一个区间 \([l_i,r_i]\)。你需要找到一个点集 \(S\) 或报告其不存在,满足:
- \(S\) 内的点构成一个简单环;
- \(\bigcap\limits_{u \in S} [l_u,r_u] = \varnothing\)。
\(1 \le n \le 5 \times 10^5\),\(1 \le m \le 10^6\),2s。
考虑第二个条件等价于 \(\max\limits_{u \in S} l_u > \min\limits_{u \in S} r_u\)。那么可以尝试找到取到左端点最大值和右端点最小值的两个点,构造经过这两点的简单环。
对于两点 \(x,y\),有经典结论:存在一个简单环经过 \(x,y\),当且仅当 \(x,y\) 处于同一个大小 \(\ge 3\) 的点双。那么找出每个点双,判断是否有其中 \(\max l_u > \min r_u\) 成立。若成立找出取到这两个值的点,拆点跑一个只增广两次的最大流即可。
时间复杂度 \(O(n+m)\)。
T2
给定两个长度均为 \(n\) 的序列 \(a_i,b_i\),有 \(q\) 次询问,每次询问给定一个区间 \([l,r]\)。你可以对 \(l \le i \le r\) 的每个 \(i\),选择 \(a_i\) 或 \(b_i\) 中的一个加入集合 \(S\),求 \(\text{mex}(S)\) 的最大值。
\(1 \le n,q \le 2 \times 10^5\),3s。
对二选一问题的经典转换是连边 \(a_i,b_i\) 然后给边定向,若一个点有入度则被选。观察到若一个连通块不是树则可以拉出一个形态是基环树的生成子图,环往同一方向定向,其余边往叶子定向即可选中所有点;树选定根后定为外向树即可只不选根。那么问题转化为查询加入 \([l,r]\) 内的边构成的所有连通块中,所有树中编号最大值的最小值是多少。
对于这个问题,暴力可以使用并查集维护,且加入一条边是简单的。因此考虑回滚莫队维护,将所有询问按照左端点块号为第一关键字,右端点为第二关键字排序,处理同一块内询问时右侧的部分开一个大小为 \(n\) 的并查集维护连通块是否为树以及连通块内编号最大的点。合并时观察到编号只有可能从答案的候选集合中被删除,因此再使用一个并查集来维护所有还是树的连通块的编号最大值。对于左侧散块,由于其最多涉及 \(2B\) 个连通块,因此新开一个大小为 \(2B\) 的并查集,其中每一个节点都对应右侧并查集的连通块,初始状态继承即可。统计答案时直接统计左右两侧的贡献。
设 \(n,q\) 同阶,复杂度 \(O\left(\dfrac{n^2}{B} \alpha(n) + nB \alpha(n)\right)\)。取 \(B=\sqrt n\) 最优,为 \(O(n \sqrt n \alpha(n))\)。
T3
给定一个长度为 \(n\) 的序列 \(a\)。构建一张完全图,边 \((u,v)\) 的边权为 \(|u-v|\max(a_u,a_v)\),\(q\) 次询问两点间最短路。
\(1 \le n,q \le 5 \times 10^5\),1.5s。
待补。

浙公网安备 33010602011771号