解题思路
本题的核心观察是:每次操作只会在区间 [l,r] 内所有相邻的机柜 (j,j+1) 之间创建网线。因此,任意时刻整张图由若干连通组构成,且每个连通组一定对应一段连续的机柜编号(即一个闭区间 [L,R])。这是因为只有相邻机柜之间才存在网线,连通性只能沿编号线性传播。
由于连通组天然是连续区间,我们只需要维护当前所有的连通组区间,并在每次操作后进行以下处理:
-
区间合并:给定新的铺设区间 [l,r],由于 l 到 r 之间所有相邻网线均已存在,这一整段必然落入同一个连通组。该新区间可能与已有的连通组区间相交或相邻(但注意:仅当已有区间与 [l,r] 有公共机柜时才能合并;比如已有 [1,3],新铺 [4,5],3 与 4 之间没有网线,不能合并)。因此我们需要将 [l,r] 与所有有交集的现有区间合并,最终形成一个大的连通组区间。
-
查询:从机柜 x 出发能到达的最大编号,等于包含 x 的那个连通组区间的右端点;若 x 不在任何连通组内(即孤立),则答案为 x 本身。
视频试看,开通会员即可查看完整视频题解:1.题目讲解 2.思路分析 3.逐行代码手写
▶️