#YDRB001D. 对应

对应

题目描述

给定一个长为 nn 的序列,每个位置上给定一个函数 f0(0)=ci1,f0(1)=ci2f_0(0)=c_{i1},f_0(1)=c_{i2}

然后定义:f1(0)=ci2,f1(1)=ci1f_1(0)=c_{i2},f_1(1)=c_{i1}

定义一个数 xx 在二进制下的第 ii 位为 xix_i,其中 x0x_0 为最低位。

定义一个数 xx 在序列位置 ii 上的对应结果为 gi(x)g_i(x),其中 gi(x)g_i(x) 二进制下第 j(0j29)j(0\le j\le 29) 位为 fr(xj)f_r(x_j)(不管最高非零位在哪里,前 3030 位均进行 fr(xj)f_r(x_j) 的计算),rrjj22 后的余数。

每次询问给定一个区间 [u,v][u,v]

定义一个数 xx 的 “u v 区间对应结果” 为 gu,v(x)=gv(gu+1(gu(x)))g_{u,v}(x)=g_v(\cdots g_{u+1}(g_u(x))\cdots)

再给定一个区间 [l,r][l,r],求集合 {gu,v(l),gu,v(l+1),,gu,v(r)}\{g_{u,v}(l),g_{u,v}(l+1),\cdots ,g_{u,v}(r)\} 中的最大值。

输入格式

第一行一个整数 n,qn,q,表示序列的长度与询问次数。

接下来 nn 行每行两个整数,描述了 ci1,ci2c_{i1},c_{i2}。保证 ci1,ci2{0,1}c_{i1},c_{i2}\in\{0,1\}

接下来 qq 行每行四个非负整数 u,v,l,ru,v,l,r,表示询问区间 [u,v][u,v] 与取值区间 [l,r][l,r]

保证 1u,vn1\le u,v\le n

输出格式

qq 行,每行一个整数表示最大值。

样例1

5 5
1 0
0 1
1 1
0 0
0 1
1 1 2 2
2 2 2 2
1 2 2 2
1 3 1 3
2 4 1 2
357913943
715827880
1073741821
1073741823
0

对于第 11 组询问,在询问区间 [1,1][1,1] 中,xx 仅需进行一次对应,ff 的取值如下表所示:

a=0a=0 a=1a=1
f0(a)f_0(a) 11 00
f1(a)f_1(a) 00 11

在取值区间 [2,2][2,2] 中,当 x=2x=2 时,xx 的二进制为:

000000000000000000000000000010

将其按照上表进行映射,得到:

010101010101010101010101010111

其十进制为 357913943357913943

样例2

见下发文件 ex_2.in/ex_2.out

该样例满足子任务 1 的数据范围。

样例3

见下发文件 ex_3.in/ex_3.out

数据范围

子任务编号 分值 特殊性质 依赖
11 2020 l=1l=1
22 rr 形如 2k12^k-1
33 1515 rl3000,n,q3000r-l\le 3000,n,q\le 3000
44 4545 0l,r<230,n,q1050\le l,r< 2^{30},n,q\le 10^5 1,2,31,2,3