题意:给定集合,求一个最大的x,使得存在一个0 ~ 2x - 1的排列,满足每相邻的两个数的异或值都在S中出现过.Si <= 2e5 解:若有a,b,c,令S1 = a ^ b, S2 = b ^ c,则有a ^ c = S1 ^ S2 因为有0存在,所以每个数都能表示成它到0路径上的所有间隔的异或和,也就是每个数都能被表示出来.我们用线性基来判断. 找到最大的x之后,我们可以发现,线性基中x个数的2x种选法一一对应这2x个数.于是直接采用格雷码来找这个排列,每加一位,就在x个数中添加 / 删除…