题意是:给你一组数组,求出存在多少个区间,满足区间内的数的xor值和and值是相等的。
我的想法是:先枚举区间左端点(假设为第 L 行),由于and的特性,从L开始,可以将[L,n)划分成32段,从L到第1段的某行的and值是全1,到第2段的某行的and值是有1个0,以此类推。那么就可以一段一段处理,而对于某一段,and值已经确定了,[a行,b行]的xor值 = [1,a] ^[1,b],可以预处理第1行到第i行的xor值,于是,可以转化成求这段区间(and值) ^ (0~L-1行的异或值)的个数,这个又可以化成两个前缀区间相减。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include