题目背景
本题为 P5350 的加强版。
本题很良心,不卡空间!
题目描述
有一个序列 an 和 q 次操作。
1 l r
求区间 [l,r] 的和
2 l r k
区间 [l,r] 赋值为 k
3 l r k
区间 [l,r] 加上 k
4 l1 r1 l1 r2
将区间 [l1,r1] 复制到 [l2,r2] 处
5 l1 r1 l2 r2
将区间 [l1,r1] 与 [l2,r2] 交换
6 l r
翻转区间 [l,r]
最后还要输出整个序列,所有输出都要对 109+7 取模。
为了卡掉某些乱搞做法,本题强制在线。
每次操作中,除了输入第一个数,其它所有数都需要异或 last 才是实际的操作。
last 为上一次 1 操作的答案 (mod109+7),定义初始 last=0。
输入格式
第一行两个正整数 n,q,表示序列长度与操作个数。
第二行 n 个正整数,表示序列 a
接下来 q 行,每行表示一次操作。
输出格式
对于每次操作,输出一行一个整数表示答案。
最后一行输出 n 个整数,表示最终的序列 a。
提示
【数据范围】
1≤n,q≤3×105
0≤ai,k≤109
对于 4,5 操作,保证 r1−l1=r2−l2 且 [l1,r1]∩[l2,r2]=∅
不保证数据随机 且 没有梯度
想交 ODT 的就算了吧!