[P3215 [HNOI2011] 括号修复 / [JSOI2011] 括号序列](https://www.luogu.com.cn/problem/P3215)
先考虑操作4,忽略操作1,2,3.在平衡树上维护ans(答案),对于每个子树,尽量消去匹配的括号对,因此,每颗子树只会剩下两个东西:待匹配的左括号和右括号,形如:)))(((or(((or))),记为lcnt,rcnt,分别描述)和(
反正是二者的线性组合。
那么早考虑从分治到合并的过程中,则可以将rcnt和lcnt合并
最后统计答案很显然,留给zpf自己思考。
故维护一下信息:左右儿子,size,优先级,lcnt,rcnt(二者动态变化)
然后就是操作1,区间填平操作,直接改打标记
对于操作三,仍然打标记,对于已经匹配的不影响,只保留|lcnt-rcnt|
对于操作二,直接打标记,并反转子树即可
以上是错误的思考
原因:其实大部分都是对的,但是对于操作2和操作3有误解,其实完全不能这么简单的处理。操作2:对于()会变成)(,而对于))(会变成())。操作3:()会变成)(,(()会变成))(,完全不能仅凭上述操作维护
启示:要用实例来验证自己的想法,不能只是简单的臆想。
正解:将括号抽象,)为-1,(为+1,则需要维护最大最小前后缀