珂朵莉树

珂朵莉树(Chtholly Tree),又名老司机树 ODT(Old Driver Tree)。起源自 CF896C

实际上,这种想法的本质是基于数据随机的「颜色段均摊」,而不是一种数据结构。

使用 set 实现的珂朵莉树的 assignaddsum 操作复杂度为 $O(n\log\log n)$.

ODT 的核心思想是将值相同的区间合并为一个结点维护,只要有区间赋值的题目都可以用 ODT 骗分。

ODT 在随机数据上表现良好,但是不保证数据随机时,会被构造数据卡到 T 飞。

Read full post gblog_arrow_right

小清新线段树

通常来说,在使用线段树维护区间操作时,需要使操作在区间上能被快速计算,经典的区间加-区间求和是一个简单的例子。

但是,这里也有一个看似难以维护的反例:

bzoj 3211 花神游历各国

维护一个序列 $A$,初始值为 $A=(a_1,a_2,a_3,\cdots,a_n)$,支持以下操作 $q$ 次:

  1. 区间求和
  2. 对区间每个数求平方根(向下取整)

$1\le n,q\le 1\times 10^5,0\le a_i\le 10^{12}.$

Read full post gblog_arrow_right