对于连续子数组,考虑状态定义代表了以结尾的数组的异或和。由于代表了,他是一定包括了,所以。 然后对于新出现的,可以通过例子,不妨用题目给出的例子。 对于以索引3结尾(从0开始),有如下3个连续子数组: [1,2],[3,1,2],[2,3,1,2]。 我们可以发现索引2位置异或了3次,索引1位置异或了2次,索引0位置异或了1次。 通过上面的例子我们可以发现,其实异或的次数是固定的。但是异或并不满足结合律,不能够拆,那么我们不妨对每一个数拆位,这样就变为了一个01序列,由于是异或运算,可以直接通过前缀中1或者0的个数求解。 #include <bits/stdc++.h> usin...