用珂朵莉树过了文艺平衡树(splay板子)……

P3391 【模板】文艺平衡树

金珂拉 @ 2021-08-22 22:21:17

思路超级奇妙

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

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

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

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

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

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

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

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

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声一片 这数据范围咋卡。。。


|