这是本文档旧的修订版!
一种可以维护历史版本的字典树,实现方面与可持久化线段树类似,主要用于维护区间异或和。
时间复杂度和空间复杂度均为 $O\left(m\log n\right)$。
给定序列 $a_1,a_2\cdots a_n$,支持下述操作:
设 $S_i=a_1\oplus a_2\oplus \cdots \oplus a_i$,于是询问操作变为 $\max_{l-1\le p\le r-1} x\oplus S_N\oplus S_p$。
考虑对序列 ${S_0,S_1,S_2\cdots S_n}$ 建立可持久化字典树,修改操作等价于在最后版本基础上插入新元素。
查询操作用类似主席树的方法查询区间中每个数与 $x\oplus S_N$ 异或的最大值即可。
给定 $n$ 个互异的数。求 $a_i\oplus a_j$ 的最大值,其中 $i,j\in [l,r]$ 且 $a_i$ 为 $a_l,a_{l+1}\cdots a_r$ 的次大值。
枚举每个次大值,显然次大值确定时区间尽可能向两边拓展可以取到最优解。
考虑对 $a_i$ 进行排序,然后通过双向链表确定最优区间(至多存在两个)。区间查询通过可持久化字典即可完成。
时空间复杂度 $O(n\log v)$。