Responsive image

问题 H: DH的异或运算(位运算+前缀和)

问题 H: DH的异或运算(位运算+前缀和)

时间限制: 1 Sec  内存限制: 256 MB
提交: 0  解决: 18
[提交][状态][讨论版][命题人:]

题目描述

本题数据量较大,关闭同步流或者用scanf加快读入速度,不然可能会TLE

给定一个长度为n的数组a,并给出q次询问,每次询问给出三个数,分别是l,r,x。
在a数组中l到r这个区间里找到连续子序列的相或(|)的值再或(|)上x,让其值最大,并输出这个值
数组下标从1开始
连续子序列为从数组开头删除若干个数,数组末尾删除若干个数得到的结果
例如 对于[3,4,8,5,9,7]这个数组来说,[3,4],[8,5,9]是它的连续子序列,[3,8,5],[4,7]则不是

输入描述

第一行为n和q
第二行有n个非负整数,分别为a1,a2,a3 ,...,an
接下来有q行每行分别有三个数表示该次询问的l,r,x
1≤n,q≤1e5
1lrn
0x260-1
对任意的i(1≤i≤n),1≤ai≤260-1

输出描述

输出q行,第i行代表第i次询问的答案

样例输入

5 5
4 11 8 2 2
3 4 5
1 1 13
1 1 17
1 4 5
1 1 8

样例输出

15
13
21
15
12
[提交][状态]
ACM算法攻关部