这个显然是要把询问维护成点对的答案。
考虑用 set 维护所谓连通的极大连续段,那么 toggle 操作显然只会连接两个段或是断开一个段。
同时在矩阵上更新下答案即可。
然后,由于询问问的是有多少个时刻而非当前是否可到达,所以考虑时间轴上差分。
即,若在 i 时刻新增 / 减少了段 (l,r),则令 (l,l)∼(r,r) 的矩阵都 ±(q−i),意即这个时刻及之后的贡献。
查询的时候,如果这两点还连通,要注意把答案减去 (q−i),i 表示当前时刻。
因为时间轴差分并没有考虑到这是在中途询问。
代码:
1 |
|