分析:
非常毒瘤的题目
要解出此题,不得不考虑部分分算法
当 a i a_i ai的值很小时,怎么做?
首先,由于答案是区间加,很容易想到差分,设 f i = B i − B i − 1 f_i=B_i-B_{i-1} fi=Bi−Bi−1
可以依次枚举每一个 a i a_i ai,求出xor和为 a i a_i ai的所有区间的贡献。
对于这个,可以枚举每个位置作为左端点的情况:
类似地(但实现上并不类似)
于是,接下来考虑如何做全部的数据。
显然,对于出现次数超过 n \sqrt n n的所有 a a a的前缀值,都可以用这种方式各做一次,这种a显然不超过 n \sqrt n n