用珂朵莉树过了文艺平衡树(splay板子)……
查看原帖
用珂朵莉树过了文艺平衡树(splay板子)……
147670
金珂拉楼主2021/8/22 22:21

思路超级奇妙

珂朵莉树是对值相同,或者值连续的一些区间进行维护,每次操作之后区间的值改变,就需要进行split操作。

这题我们维护值连续的区间,要翻转了就先把两边的端点split一下,打个标记,然后暴力翻转。

而神奇的是,我们每次split最多只会增加两个区间,而每次进行修改复杂度刚好和总区间数有关!

所以我们得到珂朵莉树的复杂度是 O(Q2) O(Q^2)

然后这题的操作又刚刚好满足结合律,而满足结合律的玩意我们当然可以用分治解决

所以我们需要一个时间复杂度只和操作数有关的算法——那不就是上面说的珂朵莉树嘛!

于是我们直接对操作分个块就完事了,总复杂度O((T2+N)×M/T)O((T^2+N)\times M/T),显然取T=n1/2T=n^{1/2}的时候答案最优秀

当然,因为珂朵莉树在随机数据下有良好的常数,而这题出题人显然不可能想到去卡珂朵莉树,所以常数甚至仅仅只比大多数平衡树写法多了一倍。如果加个区间合并优化的话甚至可以做到和平衡树差不多的时间。

AC记录

(题解满了,先发这里)

2021/8/22 22:21
加载中...