#P12523. [Aboi Round 1] Nomad
[Aboi Round 1] Nomad
题目背景
题目描述
enana 给了你一个长度为 的序列 , 次操作:
1 l r k
记 ,对 内的每个 执行 次 ;2 l r
查询区间 内的所有非空子序列的元素之积的和。
输入格式
本题输入量较大,可以使用在题目最后给出的快读板子。
第一行三个正整数 ,即序列长度和操作次数,以及是否简化输出。
第二行 个正整数 ,表示 中元素。
之后 行,每行 个正整数,表示一次操作,保证输入数据合法。
输出格式
如果 ,对于每次询问输出对应的答案;否则输出每次询问答案的异或和。
保证当 时 。
6 6 0
1 2 3 4 5 6
2 1 3
2 3 6
1 1 3 1
2 1 3
2 3 5
2 4 6
23
839
575
479
209
提示
下设 。
对于所有数据,$1\leq n,q\leq10^6,\text{type}\in\{0,1\},1\leq l\leq r\leq n,1\leq a_i,k<p-1$。
本题采用捆绑测试,你需要通过一个子任务的所有测试点才能得到该子任务的分数。
子任务编号 | 特殊性质 | 分值 | |||
---|---|---|---|---|---|
/ | |||||
A | |||||
B | |||||
/ | |||||
特殊性质 A:对于操作 ,。
特殊性质 B:对于操作 ,。
快读板子:
#define IOSIZE (1 << 20)
char buf[IOSIZE], *p1 = buf, *p2 = buf;
#define gc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, IOSIZE, stdin), p1 == p2) ? EOF : *p1++)
inline int read() { int x = 0; char c = '%'; while (c < '0' || c > '9') c = gc(); while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc(); return x; }
在控制台调试时,输入完成后需要键入 Ctrl + Z。