#6624. 单点修改为某个值,区间求和(8)
单点修改为某个值,区间求和(8)
题目 8:单点修改为某个值,区间求和
题目描述
给定一个长度为 n 的数组:
a[1], a[2], ..., a[n]
现在有 m 次操作:
1 i x:将 a[i] 修改为 x
2 l r:查询区间 [l, r] 的和
注意:操作 1 不是增加 x,而是把 a[i] 直接改成 x。
输入格式
第一行两个整数:
n m
第二行 n 个整数表示初始数组。
接下来 m 行,每行一个操作。
输出格式
对于每个操作 2,输出一行答案。
数据范围
1 ≤ n, m ≤ 100000
-10^9 ≤ a[i], x ≤ 10^9
1 ≤ i ≤ n
1 ≤ l ≤ r ≤ n
样例输入
5 5
1 2 3 4 5
2 1 5
1 3 10
2 2 4
1 5 0
2 4 5
样例输出
15
16
4
样例解释
初始:
a = [1, 2, 3, 4, 5]
操作:
1 3 10
表示:
a[3] = 10
由于原来:
a[3] = 3
所以树状数组中实际应该执行:
add(3, 10 - 3)
也就是:
add(3, 7)