编程题
### 问题描述 给定一个由 $N$ 个整数组成的数组 $A$。 考虑以下定义: - 数组 $A$ 的前缀异或数组定义为数组 $B$,其中 $B[i] = A[1] ⊕ ... ⊕ A[i]$,其中 $⊕$ 表示位异或操作。换句话说,$B = [A[1], A[1] ⊕ A[2], ..., A[1] ⊕ A[2] ... ⊕ A[N]]$。 - 数组 $A$ 的价值是数组 $B$ 中不同值的数量。例如,对于数组 $A = [1, 2, 3, 0]$,我们有 $B = [1, 3, 0, 0]$。数组 $B$ 有 $3$ 个不同的值,因此,数组 $A$ 的价值是 $3$。 - 数组 $A$ 的右移操作是一种改变数组 $A = [A[1], A[2] ..., A[N]]$ 到 $A' = [A[N], A[1], ..., A[N-1]]$ 的转换。 请计算通过在数组 $A$ 上执行任意次数(可能为零次)的右移操作,可以获得的数组 $A$ 的最大价值。 ### 输入格式 输入的第一行包含一个整数 $T$ ——需要解决的测试用例的数量。 每个测试用例的第一行包含一个整数 $N$ ——数组的大小。 每个测试用例的第二行包含 $N$ 个空格分隔的整数 $A[1], ..., A[N]$ ——数组 $A$ 的元素。 ### 输出格式 对于每个测试用例,输出一个整数,表示通过执行任意次数的右移操作后,可以获得的数组 $A$ 的最大价值。 ### 输入样例 ```text 3 2 0 0 6 1 1 1 2 2 2 4 1 2 2 8 ``` ### 输出样例 ```text 1 4 4 ``` ### 限制 $1 ≤ T ≤ 10^3$。 $0 \leq A[i] < 2^{60}$。 $2 ≤ N ≤ 2 × 10^5$。 所有测试用例的 $N$ 的总和不超过 $2 × 10^5$。
查看答案
赣ICP备20007335号-2