前置芝士
引入
来看一道例题:
在一条数轴上有 n n n 个点,分别为 1 ∼ n 1 \sim n 1∼n。一开始所有的点都被染成黑色。接着进行 m m m 次操作,第 i i i 次操作将 [ l , r ] [l,r] [l,r] 这些点染成白色。请输出每个操作执行后剩余黑色点的个数。
暴力?嗯。。。直接T飞
我们要用并查集!
实现
这题看似与并查集毫无关联。但是,我们仔细推敲过后,发现:
还是毫无关联
好吧,我们来模拟一下暴力的过程。
初始时是这样的:(为了便于表述,用格子代替点)
我们对 [ 4 , 5 ] [4,5] [4,5]涂色:
对 [ 8 , 10 ] [8,10] [8,10]涂色:
对 [ 5 , 8 ] [5,8] [5,8]涂色:
等等,问题来了,我们发现,在区间 [ 5 , 8 ] [5,8] [5,