5467. 范围更新与求和(Range Updates and Sums)
时间限制:1000 MS 内存限制:256 MB
题目描述
## 题目描述 你的任务是维护一个包含 $n$ 个元素的数组,并高效地处理以下三种类型的查询: 1. 将区间 $[a,b]$ 内的每个元素增加 $x$。 2. 将区间 $[a,b]$ 内的每个元素设定为 $x$。 3. 计算区间 $[a,b]$ 内的元素之和。 ## 输入格式 第一行两个整数 $n$ 和 $q$,表示数组大小和查询数量。 第二行包含 $n$ 个整数 $t_1, t_2, \dots, t_n$,表示初始数组的元素。 接下来 $q$ 行描述查询,格式为以下之一: - `1 a b x`:将区间 $[a,b]$ 内的元素加 $x$。 - `2 a b x`:将区间 $[a,b]$ 内的元素设为 $x$。 - `3 a b`:查询区间 $[a,b]$ 的元素和。 ## 输出格式 对于每个求和查询,输出计算出的结果。 ## 输入输出样例 ### 输入 #1 ``` 6 5 2 3 1 1 5 3 3 3 5 1 2 4 2 3 3 5 2 2 4 5 3 3 5 ``` ### 输出 #1 ``` 7 11 15 ``` ## 说明/提示 ### 数据规模与约定 - $1 \le n, q \le 2 \cdot 10^5$ - $1 \le t_i, x \le 10^6$ - $1 \le a \le b \le n$