思路
题目要求我们验证对于任意一对下标 i 和 j,等式 ai⊕aj=i⊕j 是否恒成立。
如果我们直接遍历所有的下标对 (i,j) 来进行检查,时间复杂度将是 O(n2)。考虑到 n 的最大值可以达到 2×106,O(n2) 的算法显然会超时,因此我们需要寻找一个更高效的方法。
我们可以对给定的等式进行变形。按位异或运算有一个很好的性质:x⊕y=z⇔x⊕z=y。我们可以利用这个性质来简化条件。
将等式 ai⊕aj=i⊕j 的两边同时异或上 i 和 j:
P3698.第2题-小红的异或构造spi
题目内容
小红得到了一个长为n 的数组a1,a2,.,an,他想知道是否对于所有的下标i,j(1≦i,j≦n),都满足等式ai⊕aj=i⊕j成立.
按位异或(⊕):两个整数的二进制表示按位进行异或运算。