luogu#P5586. [P5350] 序列 (加强版)

[P5350] 序列 (加强版)

题目背景

本题为 P5350 的加强版。
本题很良心,不卡空间!

题目描述

有一个序列 ana_nqq 次操作。

  • 1 l r 求区间 [l,r][l,r] 的和
  • 2 l r k 区间 [l,r][l,r] 赋值为 kk
  • 3 l r k 区间 [l,r][l,r] 加上 kk
  • 4 l1 r1 l1 r2 将区间 [l1,r1][l_1,r_1] 复制到 [l2,r2][l_2,r_2]
  • 5 l1 r1 l2 r2 将区间 [l1,r1][l_1,r_1][l2,r2][l_2,r_2] 交换
  • 6 l r 翻转区间 [l,r][l,r]

最后还要输出整个序列,所有输出都要对 109+710^9+7 取模。

为了卡掉某些乱搞做法,本题强制在线

每次操作中,除了输入第一个数,其它所有数都需要异或 last\text{last} 才是实际的操作。
last\text{last} 为上一次 11 操作的答案 (mod109+7)\pmod{10^9 +7},定义初始 last=0\text{last} = 0

输入格式

第一行两个正整数 n,qn,q,表示序列长度与操作个数。
第二行 nn 个正整数,表示序列 aa
接下来 qq 行,每行表示一次操作。

输出格式

对于每次操作,输出一行一个整数表示答案。
最后一行输出 nn 个整数,表示最终的序列 aa

10 10
7 1 3 2 2 4 0 1 2 2 
4 10 10 3 3
3 4 10 5
6 6 7
6 9 10
1 10 10
5 14 13 1 0
2 15 13 7
5 3 3 2 2
5 5 3 15 13
3 4 14 7
7
7 0 0 0 7 7 7 1 2 7

提示

【数据范围】
1n,q3×1051\le n,q \le 3\times 10^5
0ai,k1090\le a_i,k \le 10^9
对于 4,54,5 操作,保证 r1l1=r2l2r_1-l_1 = r_2-l_2[l1,r1][l2,r2]=[l_1,r_1] \cap [l_2,r_2] = \varnothing

不保证数据随机没有梯度
想交 ODT 的就算了吧!