对于每个区间,除了维护从上到下的连通性,还要维护一下上上,下下绕路的连通性。顺便,合并两个区间信息的时候,把“是否包含城镇”记在并查集的祖先上。
就比如这个样例
8 6
......
......
.+--+.
.O..O.
.O..O.
.+--+.
......
......
1
Q 1 8
如果是没按照上面的说法做,合并 [1,4] 和 [5,8] 的时候就会去掉两次贡献。实际上只需要去掉一次。问题的本源在于同一侧的点可以通过绕路互相达到。
(我才不会告诉你我从7点开始做9点开始调调到这个点就是因为这破玩意)