广告:
#include <stdio.h>
int main()
{
puts("转载请注明出处[vmurder]谢谢");
puts("网址:blog.csdn.net/vmurder/article/details/44496739");
}
题解:
首先我们处理出来 sum[0,n] 作为异或前缀和,然后答案就不再是 [l,r] 中间某段区间的异或和,而转化成求了 [l−1,r] 中任意两点异或和的最大值。
然后我们分块处理出 fi,j 表示 [第i块</
#include <stdio.h>
int main()
{
puts("转载请注明出处[vmurder]谢谢");
puts("网址:blog.csdn.net/vmurder/article/details/44496739");
}
首先我们处理出来 sum[0,n] 作为异或前缀和,然后答案就不再是 [l,r] 中间某段区间的异或和,而转化成求了 [l−1,r] 中任意两点异或和的最大值。
然后我们分块处理出 fi,j 表示 [第i块</