#P6850. 最大异或和

最大异或和

题目描述

给定一个非负整数序列 {a}\{a\},初始长度为 nn

mm 个操作,有以下两种操作类型:

  • A x:添加操作,表示在序列末尾添加一个数 xx,序列的长度变为 n+1n + 1
  • Q l r x:询问操作,你需要找到一个位置 pp,满足 lprl \leq p \leq r,使得: $ a_p \oplus a_{p + 1} \oplus \dots \oplus a_n \oplus x$ 最大,输出最大值是多少。

输入格式

第一行包含两个整数 n,mn, m,含义如问题描述所示。

第二行包含 nn 个非负整数,表示初始的序列 AA

接下来 mm 行,每行描述一个操作,格式如题面所述。

输出格式

对于每一个询问,输出一行一个整数表示询问的答案。

5 5
2 6 4 3 6
A 1
Q 3 5 4
A 4
Q 5 7 0
Q 3 6 6
4
5
6

数据范围与提示

  • 对于 20%20\% 的数据,n,m5n, m \leq 5
  • 对于 70%70\% 的数据,n,m8×104n, m \leq 8 \times 10^4
  • 对于 100%100\% 的数据,n,m3×105n, m \leq 3 \times 10^50ai1070 \leq a_i \leq 10^7

其中测试点 1,3,5,7,91, 3, 5, 7, 9 保证没有修改操作。