题解中那个看似暴力的染色,实际上正确性显然,直接看75%的时间复杂度证明
然后还是直接看75分的部分
它的里面说是用set维护块的前驱后继,然后全网没有一篇这样的题解,似乎全世界就我一个用这个方法
于是想了一中午终于想到如何维护:
就是用set记录每一个块的最后一个的位置,由于是区间覆盖,不会有重叠的块
然后考虑如何覆盖,分两种情况:
1.l,r在同一块内
就是用lower_bound找后继(原来是这个意思),然后对(l,r)暴力清除
2.else
然后就是处理中间的整块,直接清除
注意前后还会有一点小部分,可以不用管后面(从set维护什么来思考),只用维护前面,只要l-1还在块内就新建一个块
然后还是题解中的树剖+set+树状数组,或者可以用线段树的奇怪操作
不过好像理论时间复杂度快一点nlog ^2,线段树的是nlog ^3.
不过我调了一天,孤身一人...
标签:set,补充,题解,复杂度,然后,数星星,维护 From: https://www.cnblogs.com/zhy114514/p/18028156