CF2071D2 Infinite Sequence (Hard Version)
首先将 \([l, r]\) 转化为前缀异或区间。
然后做了 D1,我们发现相邻两项是可以抵消的,具体来说,扩展结论是当 \(i > n\) 时且 \(i\) 为奇数,前缀异或是相等的,因为中间的项都被消掉了。然后你发现 \(a_i = 0/1\) 的性质我们还没有用上,考虑递归计算 \(i\) 为偶数时的答案。
发现此时 \(s_i = s_{i - 1} \oplus s_{\frac{i}{2}}\),\(s_{i - 1}\) 都是一样的,因为 \(a_i = 0/1\),我们只需要计算出所有 \(s_{\frac{i}{2}}\) 的和即可算出此时的答案,递归下去又是求解一个区间,因此我们在 \(O(\log V)\) 的时间中解决了这个问题。
边界讨论有点烦。

浙公网安备 33010602011771号