其他分享
首页 > 其他分享> > 异或序列

异或序列

作者:互联网

Solution

非常板的一道题。

看到区间异或和就能想到转换为前缀异或,即

\[\sum_{i=1}^n \sum_{j=0}^{i-1} s_i \oplus s_j \]

又想到位运算各位之间互不干涉,所以想到按位来考虑。以其中一位为例,能构成一个 01 序列,对它做前缀异或后,记为 \(b_i\)。那么 \(b_i\) 的贡献就是

\[\sum_{j=0}^{i-1} [b_j\oplus b_i=1] \]

所以只需要统计前缀 0 和 1 的个数,随便更新一下答案就可以了。

标签:前缀,sum,想到,异或,序列,oplus
来源: https://www.cnblogs.com/wwlwQWQ/p/14527919.html