P5350 序列
题目背景
搬运序列
题目描述
有一个序列 $a_{1\sim n}$ 和若干操作。
- $\mathrm{1\ l \ r \ }$:求 $a_l$ 到 $a_r$ 的和。
- $\mathrm{2\ l \ r \ val \ }$:将 $a_l$ 到 $a_r$ 赋值为 $\mathrm{val}$。
- $\mathrm{3\ l \ r \ val\ }$:将 $a_l$ 到 $a_r$ 加上 $\mathrm{val}$。
- $\mathrm{4\ l_1 \ r_1 \ l_2 \ r_2 }$:将 $a_{l_1}$ 到 $a_{r_1}$ 复制到 $a_{l_2}$ 到 $a_{r_2}$ 处。
- $\mathrm{5\ l_1 \ r_1 \ l_2 \ r_2 }$:将 $a_{l_1}$ 到 $a_{r_1}$ 与 $a_{l_2}$ 到 $a_{r_2}$ 交换。
- $\mathrm{6\ l \ r \ }$:将 $a_l$ 到 $a_r$ 翻转。
输入格式
第一行两个数 $n$ 和 $m$,为序列长度和操作个数。
第二行 $n$ 个数,为 $a_{1\sim n}$。
下面 $m$ 行,每行为操作种类和相应的若干整数。
输出格式
若干行,对于每个 $1$ 操作,输出答案。
由于答案可能过大,对 $10^9+7$ 取模。
最后一行输出序列 $a_{1\sim n}$。当然也要取模。
说明/提示
**请注意常数优化。**
对于 $4$ 和 $5$ 操作,保证 $r_1-l_1=r_2-l_2$ 且区间不重叠。
保证数据随机。
对于 $30\%$ 的数据,保证 $\ n,m\le 10^3\ $。
对于 $50\%$ 的数据,保证 $\ n,m\le 5\times 10^4\ $。
对于 $70\%$ 的数据,保证 $\ n,m\le 1.5\times 10^5\ $。
对于 $100\%$ 的数据,保证 $\ n,m\le 3\times 10^5\ $,$\ 0\le a_i,\mathrm{val}< 10^9+7 $。