求l-r区间a[i]的异或结果,用o(n)算法计算:
借鉴于前缀和:
s[i]=a[i]+s[i-1]
f[i-j]=s[j]-s[i-1]
讨论区间异或是否有这样的性质
s[i]=a[i]^s[i-1]
f[i-j]=??
由于a+b=c,a=c-b;
而在异或中,a^b=c,a^b^b=c^b,又因为异或满足结合律,所以a^(b^b)=a=c^b
即a^b=c,a=c^b
由此
f[i-j]=s[j]^s[i-1]
区间异或----end
求l-r区间a[i]的异或结果,用o(n)算法计算:
借鉴于前缀和:
s[i]=a[i]+s[i-1]
f[i-j]=s[j]-s[i-1]
讨论区间异或是否有这样的性质
s[i]=a[i]^s[i-1]
f[i-j]=??
由于a+b=c,a=c-b;
而在异或中,a^b=c,a^b^b=c^b,又因为异或满足结合律,所以a^(b^b)=a=c^b
即a^b=c,a=c^b
由此
f[i-j]=s[j]^s[i-1]
区间异或----end