您首先得到一组N
整数(1<=N<=105)
。鉴于此数组,你必须执行2种操作:我们如何在每个操作的数组开始处添加元素并计算任何给定范围的总和。
(i) Operation 1 : Op1(l, r)
您将得到2个整数l
和r
。 (1 <= l <= r <= current size of the array)
。您需要返回l
和r
(含)之间的所有元素的总和。也就是说,如果数组中当前的元素是a1,a2,a3 .... an,则需要返回以下sum : al + al+1 + al+2 ... + ar
。
(ii) Operation 2 : Op2(x)
给出一个整数x (|x| <= 109)
。将此元素添加到数组的开头。在此操作之后,x
现在将变为a1
,old a1
现在将变为a2
,依此类推。阵列的大小将增加1
。
我使用初始给定数组创建了分段树,并且可以计算范围总和....但是我怎样才能在分段树中添加一个元素并相应地修改它?