数列操作与查询模板题
一、题目描述
给定一个数列a[1],a[2],⋯,a[n],需要依次执行q个操作。操作有两类:
- 操作类型为
1 l r x
:对于区间[l,r]内的所有i,将a[i]的值增加x,即a[l],a[l+1],⋯,a[r]分别加上x。
- 操作类型为
2 l r
:计算并返回区间[l,r]内数列元素的和,即a[l]+a[l+1]+⋯+a[r]的值。
二、输入格式
- 第一行:两个正整数n和q,分别表示数列长度和询问个数,保证1≤n,q≤106。
- 第二行:n个整数a[1],a[2],⋯,a[n],表示初始数列,保证∣a[i]∣≤106 。
- 接下来q行:每行一个操作,格式为
1 l r x
或 2 l r
,保证1≤l≤r≤n,∣x∣≤106 。
三、输出格式
对于每个类型为 2 l r
的操作,输出一行,包含一个整数,表示区间[l,r]内数列元素的和。
四、样例
输入
5 10
2 6 6 1 1
2 1 4
1 2 5 10
2 1 3
2 2 3
1 2 2 8
1 2 3 7
1 4 4 10
2 1 2
1 4 5 6
2 3 4
输出
15
34
32
33
50
五、数据范围与提示
所有数据均满足1≤n,q≤106,∣a[i]∣≤106,1≤l≤r≤n,∣x∣≤106 。