此题困扰时间甚长啊。。。
一开始看题目。。。标题就是那个46d,估摸着也是区间合并。。。果不其然。。。
然后就像这题算是点更新,相对于那题是段更新。。。果断就照46的往里写。。结果样例都过不去。。。
后面自己手工模拟了下。。。发现当两端都取完的时候要取中间。。。然后中间1个为1一个为2的时候视为同一情况,可以自己手工模拟下样例
然后我就一直在想如何维护两端和中间按那题的做法那么我无论怎么样不会区间优先然后在找左边,还有怎么等同于看1区间和2区间呢,后来就一直没有想出来啊啊啊啊。。。。
后来看了下别人的代码,貌似有用set模拟线段树的,我想估计是此题是点的操作,所以可以这样把。。。。也没细看
那么我们就可以直接先看左右区间哪个区间最大,然后在来询问,那么对于中间的情况呢那么我们始终取中点就可以保证对于两端都是最优的情况,即对于中间最长连续取终点,两端取端值,这样就可以和46d联系起来了,然后询问的时候注意要查询的区间应该*2