本来是想跟题一起发的,但是担心自己将来找不到2333也没多少内容。
异或的概念
两个数异或:不同为1,相同为0。
异或的性质:
1.交换律
2.结合律
3.x^x=0,x^0=x
4.自反性,即A^B^A=B
如何利用异或交换2个数(可不引用新的变量):
void Swap(int a,int b){
a=a^b;
b=a^b;
a=a^b;
}
【这个还没有自带的swap快】
对于任意的非负偶数a,若b=a+1,则b^1=a,a^1=b;
这个在存储反向边的时候非常有用。
对于同一个数,奇数次异或是本身,偶数次异或是0。