题目描述
小婷有 n 颗宝石排成一排,第 i 颗宝石的能量值为 ai。定义一个区间 [l,r] (1≤l≤r≤n) 的异或和为
al⊕al+1⊕⋯⊕ar,
其中 ⊕ 表示二进制按位异或。
小泽想要从中选取最长的连续一段宝石制作项链。为了保证项链能量的稳定性,这段宝石中不能存在任何一个非空连续区间的异或和为 0。换句话说,对于选取的任意区间 [l′,r′],都必须满足
$$a_{l'}\oplus a_{l'+1}\oplus\cdots\oplus a_{r'}\ne 0.$$
小婷和小泽想知道,最长能选取多长的一段?
例如,对于序列 [1,2,3,4],只能选取长度为 3 的段,因为长度为 4 的区间不符合要求,其中子区间 [1,3] 的异或和为 0。
你需要帮助小婷和小泽求出他们能选取的最长长度。
输入格式
输入的第一行包含一个整数 n,表示宝石的数量。
输入的第二行包含 n 个非负整数 a1,a2,…,an,表示每颗宝石的能量值。
输出格式
输出一行一个非负整数,表示小婷和小泽能选取的最长长度。
输入
4
1 2 3 4
输出
3
输入
6
1 5 9 2 6 5
输出
6
输入
10
100 8 2 7 8 4 1 16 3 8
输出
8
说明/提示
样例 1 解释:
长度为 2 的段 [2,3],其异或和为 2⊕3=1=0,且其子区间 [2,2]、[3,3] 的异或和分别为 2、3,均不为 0,合法。
长度为 3 的段 [2,4] 的异或和为 2⊕3⊕4=5,且其子区间 [2,3] 的异或和为 1=0,[3,4] 的异或和为 7=0,[2,2]、[3,3]、[4,4] 也均不为 0,所以 [2,4] 是合法的,长度为 3。实际该序列的最长合法段为 [2,4],长度为 3。
长度为 4 的段 [1,4] 的异或和为 1⊕2⊕3⊕4=4,但存在子区间 [1,3] 异或和为 0,不合法。
样例 2 解释:所有长度的连续区间的异或和均不为 0,即选择全部的 6 个元素即为最长段。
样例 3 解释:最长的一段为 [2,7,8,4,1,16,3,8],该段中所有子段的异或和均不为 0。
数据范围
对于 100% 的数据,1≤n≤5×105,0≤ai≤220。
本题共 20 个测试点,每个测试点 5 分。各测试点的数据范围如下:
| 测试点编号 |
n≤ |
特殊性质 |
| 1∼2 |
30 |
A |
| 3∼4 |
无 |
| 5∼6 |
100 |
B |
| 7∼8 |
无 |
| 9 |
500 |
B |
| 10∼12 |
无 |
| 13∼14 |
5×103 |
C |
| 15∼16 |
无 |
| 17 |
5×105 |
C |
| 18∼20 |
无 |
特殊性质 A:所有 ai 都是 2 的幂且互不相同。
特殊性质 B:所有 ai 都相等。
特殊性质 C:ai∈{0,1}。