牛客2020寒假训练营4-D
七月 15, 2020
题意
输入一个数列a,你需要输出其中异或值为0的不同子段的数量。一个子段 [l,r] (
1≤l≤r≤n)的异或值为al⊕al+1⊕al+2⊕…⊕ar,其中⊕符号代表异或运算。
题解
如果[l,r]是合法的子段,说明前缀和中xorsum[r]^xorsum[l-1] = 0, xorsum[l-1] = xorsum[r]。求出异或前缀和,然后使用map计数每一个数字有多少个前缀和等于那个数字即可。
如果题目改为输出其中异或值为a的不同字段的数量
那么xorsum[r]^xorsum[l-1]=a
那么对于一个xorsum[r] 要求前面又几个xorsum[l]=a^xorsum[r]
1 |
|
查看评论