#P8659. [蓝桥杯 2017 国 A] 数组操作

    ID: 7715 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>2017O2优化蓝桥杯国赛

[蓝桥杯 2017 国 A] 数组操作

题目描述

给出一个长度为 nn 的数组 {A}\{A\},由 11 到 nn 标号,你需要维护 mm 个操作。

操作分为三种,输入格式为:

1 L R d,将数组中下标 LL 到 RR 的位置都加上 dd,即对于 L≤i≤RL \le i \le R,执行 A[i]←A[i]+dA[i]\leftarrow A[i]+d。

2 L1 R1 L2 R2,将数组中下标为 L1L_1 到 R1R_1 的位置,赋值成 L2L_2 到 R2R_2 的值,保证 R1−L1=R2−L2R_1-L_1=R_2-L_2。

换句话说先对 0≤i≤R2−L20 \le i \le R_2-L_2 执行 Bi←AL2+iB_i\leftarrow A_{L_2+i},再对 0≤i≤R1−L10 \le i \le R_1-L_1 执行 AL1+i←BiA_{L_1+i}\leftarrow B_i,其中 {B}\{B\} 为一个临时数组。

3 L R,求数组中下标 LL 到 RR 的位置的和,即求出 ∑i=LrAi\sum\limits_{i=L}^{r}A_i。

输入格式

从标准输入读入数据。

第一行一个整数 Case,表示测试点编号,其中 Case 为 00 时表示该点为样例。

第二行包含两个整数 n,mn,m。保证 1≤n,m≤1051 \le n,m \le 10^5。

第三行包含 nn 个整数 AiA_i,表示这个数组的初值。保证 0≤Ai≤1050 \le A_i \le 10^5。

接下来 mm 每行描述一个操作,格式如问题描述所示。

对于操作中提到每个数,满足 0≤d≤1050 \le d \le 10^5,1≤L≤R≤n1 \le L \le R \le n,1≤L1≤R1≤n1 \le L_1 \le R_1 \le n,1≤L2≤R2≤n1 \le L_2 \le R_2 \le n,R1−L1=R2−L2R_1-L_1=R_2-L_2。

输出格式

对于每次 3 操作输出一行一个数,表示求和的结果。

0
5 6
1 2 3 4 5
2 1 3 3 5
3 3 5
1 2 4 2
3 3 5
2 1 3 3 5
3 1 5
14
18
29

提示

测试点 nn,mm 其他约束
1,2 ≤103\le10^3 无
3,4 ≤105\le10^5 没有 2 操作
5,6,7 nn 为偶数,且所有 2 操作满足 L1=1L_1=1,R1=⌊n2⌋R_1=\lfloor\frac{n}{2}\rfloor,L2=⌊n2⌋+1L_2=\lfloor\frac{n}{2}\rfloor+1,R2=nR_2=n
8,9,10 无

对于 100%100\% 的评测用例,1≤n≤1051 \le n \le 10^5,0≤ai<bi≤100000 \le a_i<b_i \le 10000。