如果使用莫队做法,在 add 和 del 有这样的语句:now+/-=cnt[a[w]^k]; 因为 awa_waw 和 kkk 都小于等于 10610^6106,所以我就直接把 cnt 数组也开到了 10610^6106。而这是不行的,因为 a[w]^k 会爆 10610^6106。考虑 aw=219−1,k=219a_w=2^{19}-1,k=2^{19}aw=219−1,k=219,这样异或起来为 220−1=10485752^{20}-1=1048575220−1=1048575,所以 cnt 数组要开到 104857610485761048576。
add
del
now+/-=cnt[a[w]^k];
cnt
a[w]^k