#1964. 「Gensokyo OI Round 2」审判与救赎
「Gensokyo OI Round 2」审判与救赎
题目描述
给定一个长度为 n 的非负整数序列 a1,a2,...,an。有 q 次询问,每次询问给定 l,r。
对区间 [l,r] 中的所有数,将它们划分成若干个非空组。每个数必须恰好属于一个组,组内元素不要求在原序列中连续。一个组的权值定义为组内所有数的按位异或和。
若一次划分得到的各组权值为 b1,b2,...,bk,则这次划分的价值为 b1×b2×...×bk。
请对每次询问求出可能的最大价值。由于答案可能很大,只需要输出最大价值对 998244353 取模后的结果。
输入格式
第一行两个整数 n,q。
第二行 n 个整数 a1,a2,...,an。
接下来 q 行,每行两个整数 l,r,表示一次询问。
输出格式
输出 q 行,第 i 行包含一个整数,表示第 i 次询问的答案。
样例 1
输入:
5 3
1 2 3 0 4
1 3
2 4
3 5
输出:
9
6
12
样例 2
输入:
4 2
0 0 0 0
1 1
1 4
输出:
0
0
数据范围
对于所有测试数据,1≤n,q≤5×10^5,0≤ai<2^30,1≤l≤r≤n。
本题采用捆绑测试,包含多种子任务。
样例解释
样例 1 第一次询问中,区间为 1,2,3,可划分为 {1,2} 和 {3},价值为 (1⊕2)×3=3×3=9。第二次区间为 2,3,0,可划分为 {2,0} 和 {3},价值为 2×3=6。第三次区间为 3,0,4,可划分为 {3,0} 和 {4},价值为 3×4=12。