在抗日战争期间,华北平原广大地区进行了大规模的隧道战。一般来说,通过隧道连接的村庄排成一列。除了两端,每个村庄都与两个相邻的村庄直接相连。
入侵者经常对一些村庄发动袭击并摧毁其中的部分隧道。八路军指挥官要求最新的隧道和村庄连接状态。如果某些村庄严重隔离,必须立即恢复连接!
输入
输入的第一行包含两个正整数n和m(n,m≤50,000),表示村庄和事件的数量。接下来的m行中的每一行描述一个事件。
以下所示的不同格式描述了三种不同的事件:
D x:第x个村庄被摧毁。
问题x:陆军指挥部要求第x个村庄与其直接或间接相关的村庄数量。
R:最后毁坏的村庄被重建了。
产量
按顺序输出每个陆军指挥官要求的答案。
样本输入
7 9
D 3
D 6
D 5
Q 4
Q 5
R
Q 4
R
Q 4
样本输出
1
0
2
4
思路:
该题题意就是让你找点的连通的最大区间,网上由博客用区间合并做的,具体思路没看懂,也可以用最值解决;
例如 1 2 3 4 5,如果首先摧毁3村子,则12联通,45连通,与3连通的村子为0,我们维护两个区间最值,一个最大值,一个最小值,先将所有村子赋为0,哪个村子被摧毁,将该村子权值赋为该村编号,将维护的线段树最小值初始化为n+1,最大值初始化为0,同时摧毁时将该村子最大值最小值都赋为编号,然后最大连通区间即为询问的点右侧的最小值减去左侧最小值减一,如果相等则为0,,,看上面例子,初始化以后为 0 0 0 0 0 ,min:(6 6 6 6 6)max:(0 0 0 0 0),假如先将3摧毁,变