#luoguP11692. [Ynoi Hard Round 2025] 《十字神名的预言者》宏伟(色彩)

[Ynoi Hard Round 2025] 《十字神名的预言者》宏伟(色彩)

本题没有可用的提交语言。

题目背景

题目描述

十字神名的电脑里有 nn 个程序,每个程序的作用都是输入一个数,输出一个数。具体如下:

ii 个程序的输出是输入 xx 的函数 fi(x)f_i(x),具体地:

$$f_i(x)= \begin{cases} (x-d_i)\bmod a_i & x\in [l_i,r_i] \\ x & x\notin [l_i,r_i]\\ \end{cases} $$

可以看出,程序由四个参数 li,ri,di,ail_i,r_i,d_i,a_i 决定,保证 0diliri0 \le d_i \le l_i \le r_i 且都是整数。程序的输入和输出也都是非负整数。

电脑里有一个校验码,初始为 00

ii 个程序被调用的时候,如果输入的 xx 满足 x[li,ri]x \in [l_i,r_i]xdiaix-d_i \ge a_i,也就是减法和取模都“发生”了,则这个程序会给电脑里的校验码按位异或上这个程序的 aia_i

十字神名想要知道,如果她有一个初始值为 xx 的变量 v\mathbf{v},先把电脑的校验码置 00,然后依次对 i=L,L+1,,Ri=L,L+1,\dots ,R 执行 vfi(v)\mathbf{v}\gets f_i(\mathbf{v})(每一步会调用一次程序 ii 来计算),最后电脑的校验码会是多少。

她有 mm 次询问,每次会分别给出 x,L,Rx,L,R,请你帮她计算。

询问是按强制在线顺序给出的,你必须得出前一次询问的答案才能知道下一次询问的参数。

输入格式

第一行两个数 n,mn,m,分别表示程序个数和询问个数。

之后 nn 行,第 ii 行是四个数 li,ri,di,ail_i,r_i,d_i,a_i,含义如上述。

之后 mm 行,每行三个数 $L\oplus (z\bmod n),\;R\oplus (z\bmod n),\;x\oplus z$ 表示一次询问,其中 zz 是上次询问的答案(特别地,在第一次询问时,z=0z=0),\oplus 是按位异或。

输出格式

对每个询问,输出一行一个数表示答案。

10 10
2 2 2 2
1 2 0 1
1 1 0 1
0 0 0 1
2 2 0 1
3 3 0 1
22 22 18 14
5 5 1 4
1 1 0 1
1 1 0 1
2 10 73
3 9 70
1 9 71
1 5 71
1 10 8
1 10 67
1 10 5
5 14 93
3 10 14
3 10 88
0
0
0
0
0
0
4
0
0
0
20 20
1 1 0 1
18 23 8 11
5 9 4 4
1 2 1 1
37 38 18 19
3 3 2 1
14 18 5 9
1 1 0 1
2 3 2 1
2 2 1 1
1 1 0 1
1 1 1 1
3 3 1 1
1 1 0 1
15 15 8 7
1 1 0 1
1 1 0 1
1 2 1 1
1 2 1 1
33 65 3 32
1 15 18
1 20 79
1 19 8
13 16 39
4 24 56
2 20 75
4 10 1
8 13 40
2 20 87
1 20 93
1 2 69
2 19 84
1 20 35
15 30 4
10 16 70
2 20 1
1 16 57
2 20 54
14 31 50
6 20 53
0
0
4
32
0
0
0
0
0
0
0
0
32
0
0
0
0
32
0
32

提示

Idea:nzhtl1477&yzy4090,Solution:nzhtl1477&ccz181078,Code:ccz181078,Data:ccz181078&nzhtl1477

对于 100%100\% 的数据,保证 1n1051\le n\le 10^51m5×1051\le m\le 5\times 10^50diliri10180 \le d_i \le l_i \le r_i \le 10^{18}1x,ai10181 \le x,a_i \le 10^{18}1LRn1\le L\le R\le n

注意输入的询问参数是 $L\oplus (z\bmod n),\;R\oplus (z\bmod n),\;x\oplus z$,其中 zz 是上次询问的答案(特别地,在第一次询问时,z=0z=0),\oplus 是按位异或。这个异或结果有可能超出 L,R,zL,R,z 本身的范围。数据范围内的 L,RL,R 范围指的是解除异或后实际询问的 L,RL,R