P17730 [SCP-J 2026] 数组 / array

题目背景

在洛谷上提交试题时,无需文件输入输出。

题目描述

若数组 $a,S$ 长度均为 $n$,且对于所有 $1\le i\le n$,均满足 $S_i=a_1+a_2+\cdots+a_i$,则数组 $S$ 为数组 $a$ 的前缀和数组。 小 D 有 $n$ 个数组 $A_0,A_1,\cdots,A_{n-1}$,长度均为 $n$。用 $A_{i,j}$ 表示数组 $A_i$ 的第 $j$ 项。已知数组 $A_0$ 的初始值,对于所有 $1\le i

输入格式

输入的第一行包含三个整数 $n,p,q$,分别表示数组数量,修改操作数量和询问操作数量。 输入的第二行包含 $n$ 个整数 $A_{0,1},A_{0,2},\dots,A_{0,n}$,表示初始的数列 $A_0$。 接下来 $p+q$ 行,每行输入第一个数字 $o$ 表示操作种类: - 若 $o=1$,则为修改操作。接下来输入四个数字 $x,l,r,k$,表示将数组 $A_x$ 的第 $l\sim r$ 项增加 $k$。 - 若 $o=2$,则为查询操作。接下来输入三个数字 $x,l,r$,表示查询数组 $A_x$ 中第 $l\sim r$ 项之和。

输出格式

输出 $q$ 行,一行一个非负整数,表示查询操作的结果。结果对 $10^9+7$ 取模。

说明/提示

#### 【样例 1 解释】 第一次修改后: - 原数组 $A_0$ 为 $[1,3,4,5,5,6,7,8,9,10]$; - $A_1$ 为 $[1,4,8,13,18,24,31,39,48,58]$; - 查询的答案分别为 $3+4+5=12$ 和 $4+8+13=25$。 第二次修改后: - $A_1$ 为 $[1,4,7,12,17,24,31,39,48,58]$; - $A_2$ 为 $[1,5,12,24,41,65,96,135,183,241]$; - 第 $2$ 项到第 $8$ 项的和为 $5+12+24+41+65+96+135=378$。 #### 【样例 2】 见选手目录下的 ``array/array2.in`` 与 ``array/array2.ans``。 该样例满足测试点 $4 \sim 7$ 的限制。 #### 【样例 3】 见选手目录下的 ``array/array3.in`` 与 ``array/array3.ans``。 该样例满足测试点 $8 \sim 10$ 的限制。 #### 【样例 4】 见选手目录下的 ``array/array4.in`` 与 ``array/array4.ans``。 该样例满足测试点 $22 \sim 25$ 的限制。 #### 【数据范围】 对于所有测试点,保证: - $1\le n\le 300$ - $0\le p,q \le 10^5$ - 对于所有 $1\le i\le n$,均有 $\lvert A_{0,i}\rvert\le 10^9$ - $o\in\{1,2\}$ - 对于所有操作,均有 $0\le x