题意 给一个长度为\(n\)的位数为\(k\)的整数数列\(a\),一次操作可将任意\(a_i\)取反,问经过任意次操作后最多有多少个区间异或和不为\(0\) 分析 求出前缀异或和,区间异或和为\(0\)的区间数转化为求有多少对前缀异或和相等,然后用总区间数减一下, 对一个\(a_i\)取反等同于对这个位置的前缀异或和取反,所以每个位置的前缀异或和有两种,贪心取当前值出现次数最小的一种, 总区间数为\(n*(n+1)/2\) ,对于每个非\(0\)数字减去\(C(x,2)\),\(x…