题外话
补 abc365 E 的时候发现要用异或前缀和,很多文章没有分析为什么异或前缀和是这么用的,遂发文记录个人思考(作为一个 156 个月大的小宝宝,这真是太难了)。
异或的一些性质
因为是按位异或,很明显可以把每一位分开来做。异或是不进位的加法,比如说 1⊕1=0,10⊕11=011\oplus1=0,10\oplus11=011⊕1=0,10⊕11=01,每位加起来只取最后一位。那我们把它推广到多个数字,101⊕110⊕100101\oplus110\oplus100101⊕110⊕100,先把前两个“加”起来,得到 011⊕100011\oplus100011⊕100,再加一下,得到 111111111。由于不进位,两个 111 加起来就会变成 000,再加一个 111 又变成 111,那说白了就是数每一位上有几个 111,奇数个结果就是 111,偶数个就是 000。于是交换律和结合律也就随之而来了,因为再怎么换,每一位上该有几个 111,还是几个 111。
结论:a⊕b=b⊕aa\oplus b=b\oplus aa⊕b=b⊕a,(a⊕b)⊕c=a⊕(b⊕c)(a\oplus b)\oplus c=a\oplus(b\oplus c)(a⊕b)⊕c=a⊕(b⊕c)。
异或前缀和?
二进制数的某一位加上 000 还是它本身,加上 111(不进位)会 0/10/10/1 切换。那么 xxx 异或 yyy 的时候,yy