我在左指针左移/右指针右移的更新函数中,先把区间内的cnt[x]更新,再更新的答案。如果使用前缀亦或,那么在cnt[x^k]的时候,就有可能出现x=x^k的情况,也就是说这时候的答案会加多。
cnt[x]
cnt[x^k]
x=x^k
hack数据:
输入:
4 1 0 1 1 1 1 1 4
先更新cnt[x]再更新答案输出:
9
正确输出:
4
我的错误函数:
void add(int x){ cnt[x]++; ans+=cnt[k^x]; }