/ ep / 题库 /

动态区间求和(增强版)

动态区间求和(增强版)

描述

给定一个长度为\(n\)的序列,初始值为\({1,2,3,......,n}\),编号为\(1到n\)
维护这个序列,可以进行单点修改,区间加法,区间求和

输入

第一行,一个整数\(n\),表示序列的长度
第二行,一个整数\(q\),表示操作次数
接下来的\(q\)行,每行若干个整数
若第一个整数为1,则后面接2个整数\(x,y\),表示将序列的第\(x\)个数修改为\(y\)
若第一个整数为2,则后面接3个整数\(l,r,s\),表示将序列的第\(l\)个到第\(r\)个数都加上\(s\)(即区间\([l,r]\)都加上\(s\))
若第一个整数为3,则后面接2个整数\(l,r\),表示求当前序列的子区间\([l,r]\)的所有数的和

输出

对于每个询问输出一行,一个整数,表示所求区间的和

输入样例

10
5
3 1 10
2 3 7 5
1 5 1
3 1 5
3 1 10

输出样例

55
21
71

数据范围和限制

对于50%的数据:\(n\leq100000\)
对于100%的数据:\(1\leq n\leq 10^9,1\leq q\leq 200000,1\leq l\leq r\leq n,1\leq x\leq n,1\leq y\leq 10^9,1\leq s\leq 10000\)
时间限制1s,空间限制256M

信息

ID
1010
难度
7
分类
数据结构 | 线段树 点击显示
标签
(无)
递交数
17
已通过
1
通过率
6%
上传者