金珂拉 @ 2021-08-22 22:21:17
思路超级奇妙
珂朵莉树是对值相同,或者值连续的一些区间进行维护,每次操作之后区间的值改变,就需要进行split操作。
这题我们维护值连续的区间,要翻转了就先把两边的端点split一下,打个标记,然后暴力翻转。
而神奇的是,我们每次split最多只会增加两个区间,而每次进行修改复杂度刚好和总区间数有关!
所以我们得到珂朵莉树的复杂度是
然后这题的操作又刚刚好满足结合律,而满足结合律的玩意我们当然可以用分治解决
所以我们需要一个时间复杂度只和操作数有关的算法——那不就是上面说的珂朵莉树嘛!
于是我们直接对操作分个块就完事了,总复杂度
当然,因为珂朵莉树在随机数据下有良好的常数,而这题出题人显然不可能想到去卡珂朵莉树,所以常数甚至仅仅只比大多数平衡树写法多了一倍。如果加个区间合并优化的话甚至可以做到和平衡树差不多的时间。
AC记录
(题解满了,先发这里)
by JRzyh @ 2021-08-22 22:22:58
orz
by JRzyh @ 2021-08-22 22:23:27
尝试私信管理交个题解吧
by Sya_Resory @ 2021-08-22 22:26:21
orz
我第一次看这题的时候也想到了ODT但是不会写/kk
by 年年有年 @ 2021-08-22 22:28:15
定期重构么 和我当时的想法一样 可惜已经有题解了
https://www.luogu.com.cn/blog/101734/p3391-ti-xie
by 年年有年 @ 2021-08-22 22:31:01
@金珂拉
by Alan_Zhao @ 2021-08-22 22:39:49
@听取MLE声一片 这数据范围咋卡。。。