#P9747. 「KDOI-06-S」签到题

「KDOI-06-S」签到题

题目背景

你正在追番,突然家长进来了,于是你假装在写一道数据结构题。

题目描述

定义一个长度为 mm 的数组 vv 是合法的,当且仅当经过若干次以下操作可以使 vv 中的所有元素相等:

  • 选择四个整数 a,b,c,da,b,c,d1abm1\leq a\leq b\leq m1cdm1\leq c\leq d\leq m)满足 ba+1=dc+1b-a+1=d-c+1,且 $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$,其中 or\operatorname{or} 表示按位或运算。接下来,将区间 [a,b][a,b] 的数复制下来再覆盖到区间 [c,d][c,d]注意:区间 [a,b]\bm{[a,b]}[c,d]\bm{[c,d]} 可能会相交。

给出一个长度为 nn 的序列 a1,a2,,ana_1,a_2,\ldots,a_n 以及 qq 次询问,每次询问给定两个正整数 l,rl,r,你需要回答区间 [l,r][l,r] 内的最长合法子区间的长度。

输入格式

从标准输入读入数据。

本题含有多组测试数据。

输入的第一行包含两个整数 T,idT,id,表示数据组数和测试点编号(样例的测试点编号为 00)。

对于每组测试数据数据,第一行两个正整数 n,qn,q,表示序列长度与询问次数。

第二行 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示序列 aa 中每个元素的值。

接下来 qq 行,每行两个正整数 l,rl,r,表示询问的区间。

输出格式

输出到标准输出。

对于每组测试数据的每次询问,输出一行一个整数,表示区间 [l,r][l,r] 内的最长合法子区间的长度。

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】

对于第一组数据的第一个询问,最长的合法子区间为 [1,7][1,7],以下是一种可能的操作序列:

  1. 选择区间 [1,4][1,4][2,5][2,5],将区间 [1,4][1,4] 中的数先复制下来,再覆盖到 [2,5][2,5] 上,此时序列变为 [0,0,4,2,6,6,6][0,0,4,2,6,6,6]

  2. 选择区间 [5,6][5,6][3,4][3,4],此时序列变为 [0,0,6,6,6,6,6][0,0,6,6,6,6,6]

  3. 选择区间 [4,7][4,7][1,4][1,4],此时序列变为 [6,6,6,6,6,6,6][6,6,6,6,6,6,6]

注意,操作并不会真正的修改原序列中的值。

对于第一组数据的第二个询问,最长的合法子区间为 [2,2][2,2][3,3][3,3]

【样例 #2】

见选手目录下的 binary/binary2.inbinary/binary2.ans

这个样例满足测试点 585\sim 8 的条件限制。

【样例 #3】

见选手目录下的 binary/binary3.inbinary/binary3.ans

这个样例满足测试点 253125\sim 31 的条件限制。

【样例 #4】

见选手目录下的 binary/binary4.inbinary/binary4.ans

这个样例满足测试点 465046\sim 50 的条件限制。


【数据范围】

对于所有数据保证:1T2×1051\le T\le 2\times 10^51n,q,n,q2×1061\le n,q,\sum n,\sum q\le 2\times 10^60ai<2300\le a_i < 2^{30}

测试点编号 n\sum n\le q\sum q\le 特殊性质
11 55
242\sim 4 100100
585\sim 8 10001000 10001000
9149\sim 14 10610^6
151915\sim 19 60006000
202420\sim 24 5000050000 1010
253125\sim 31 10510^5 B
323632\sim 36 2×1052\times 10^5
374137\sim 41 5×1055\times 10^5 10610^6 B
424442\sim 44 5×1055\times 10^5
4545 2×1062\times 10^6 A
465046\sim 50
  • 特殊性质 A:保证序列 aa 中的每个数均在 [0,230)[0,2^{30}) 之间均匀随机生成。
  • 特殊性质 B:保证对于任意 1in1\le i\le nai3a_i\le 3

【提示】

本题输入输出量较大,请使用适当的 I/O 方式。

请注意常数因子对程序运行效率产生的影响。

KDOI 出题组温馨提示:多测不清空,爆零两行泪。