题意
求对所有的二元组,的异或和
分析
考虑对于第位的贡献,将所有数对取模(因为大于等于的部分对第位不产生贡献)
对于任意和来说,和要在第位为(为不产生贡献),即和的范围必须在或中
如果产生的贡献为奇数,则答案中该位为,否则为
统计第位时,则可以取模,排序,双指针(二分),分别统计两个区间内的数,合并
1 |
|
题意
求对所有的二元组(i,j)(i<j),ai+aj的异或和
分析
考虑对于第k位的贡献,将所有数对2k+1取模(因为大于等于2k+1的部分对第k位不产生贡献)
对于任意ai和aj来说,和要在第k位为1(为0不产生贡献),即和的范围必须在[2k,2k+1−1]或[2k+2k+1,2k+2−2]中
如果产生的贡献为奇数,则答案中该位为1,否则为0
统计第k位时,则可以取模,排序,双指针(二分),分别统计两个区间内的数,合并
1 | #pragma GCC optimize(3, "Ofast", "inline") |