#luoguP9747. 「KDOI-06-S」签到题
「KDOI-06-S」签到题
本题没有可用的提交语言。
题目背景
你正在追番,突然家长进来了,于是你假装在写一道数据结构题。
题目描述
定义一个长度为 的数组 是合法的,当且仅当经过若干次以下操作可以使 中的所有元素相等:
- 选择四个整数 (,)满足 ,且 $v_a\operatorname{~or~}v_{a+1}\operatorname{~or~}\cdots\operatorname{~or~}v_b=v_c\operatorname{~or~}v_{c+1}\operatorname{~or~}\cdots\operatorname{~or~}v_d$,其中 表示按位或运算。接下来,将区间 的数复制下来再覆盖到区间 。注意:区间 和 可能会相交。
给出一个长度为 的序列 以及 次询问,每次询问给定两个正整数 ,你需要回答区间 内的最长合法子区间的长度。
输入格式
从标准输入读入数据。
本题含有多组测试数据。
输入的第一行包含两个整数 ,表示数据组数和测试点编号(样例的测试点编号为 )。
对于每组测试数据数据,第一行两个正整数 ,表示序列长度与询问次数。
第二行 个正整数 ,表示序列 中每个元素的值。
接下来 行,每行两个正整数 ,表示询问的区间。
输出格式
输出到标准输出。
对于每组测试数据的每次询问,输出一行一个整数,表示区间 内的最长合法子区间的长度。
2 0
7 2
0 4 2 6 0 6 6
1 7
2 3
3 1
1 2 3
1 3
7
1
3
提示
【样例解释 #1】
对于第一组数据的第一个询问,最长的合法子区间为 ,以下是一种可能的操作序列:
-
选择区间 和 ,将区间 中的数先复制下来,再覆盖到 上,此时序列变为 。
-
选择区间 和 ,此时序列变为 。
-
选择区间 和 ,此时序列变为 。
注意,操作并不会真正的修改原序列中的值。
对于第一组数据的第二个询问,最长的合法子区间为 和 。
【样例 #2】
见选手目录下的 binary/binary2.in
与 binary/binary2.ans
。
这个样例满足测试点 的条件限制。
【样例 #3】
见选手目录下的 binary/binary3.in
与 binary/binary3.ans
。
这个样例满足测试点 的条件限制。
【样例 #4】
见选手目录下的 binary/binary4.in
与 binary/binary4.ans
。
这个样例满足测试点 的条件限制。
【数据范围】
对于所有数据保证:,,。
测试点编号 | 特殊性质 | ||
---|---|---|---|
无 | |||
B | |||
无 | |||
B | |||
无 | |||
A | |||
无 |
- 特殊性质 A:保证序列 中的每个数均在 之间均匀随机生成。
- 特殊性质 B:保证对于任意 ,。
【提示】
本题输入输出量较大,请使用适当的 I/O 方式。
请注意常数因子对程序运行效率产生的影响。
KDOI 出题组温馨提示:多测不清空,爆零两行泪。