首先有一个经典结论是 Thue-Morse 序列的第 i 项的值就是 parity(i)。因此题目中给出的询问操作其实就是问 i=0∑m−1parity(i⊕(i+n))。
记 S(m,n)=i=0∑m−1parity(i⊕(i+n))。考虑到有 parity(2x)=1−parity(2x+1)=parity(x)。因此考虑按照 n,m 的奇偶性分别讨论计算答案:
- 2∣n:记 n=2k,m=2q+r(r∈{0,1}),则有 S(m,2k)=2S(q,k)+rparity(q⊕(q+k))。
- 2∤n:记 n=2k+1,m=2q+r(r∈{0,1}),则有 S(m,2k+1)=2q−S(q,k)−S(q,k+1)+r(1−parity(q⊕(q+k)))。
边界条件是 S(0,n)=S(m,0)=0,记忆化搜索就可以做到 O(log2n) 处理单组数据。
喜欢的话,留下你的评论吧~