Problem
给一个序列${ a}$,长度为n.
有m个操作.
1.在序列末尾添加一个x.
2.找到一个$p∈[l,r]$,使得$a[p]⊕a[p+1]⊕…⊕a[N]⊕x$最大,其中N为序列的长度。
Solution
记$all$为$a[1]⊕a[2]⊕a[3]…⊕a[N]$
询问即为找到一个$p∈[l,r]$ 使得$a[1]⊕a[2]⊕a[3]…⊕a[p]⊕all⊕x$最大。
所以,我们只需要维护序列${a}$的前缀异或和即可。
这里引出了一个算法:
听起来十分高大上。
其实就是用一颗01Trie维护每一位的出现次数。
和可持久化主席树的实现差不多。
网上的板子都过于优秀(神仙)
受到右边大佬启发后,开始研究如何像写主席树一样写可持久化Trie.
个人感觉很好理解。
Code
1 |
|