加法,乘法,替换查询

时间:2015-07-04 16:54:36

标签: arrays algorithm segment-tree

给定长度为N的一维整数数组A.我们需要Q查询以下每种类型:

注意:M固定为10 ^ 9 + 7

查询1:1 x y v:这意味着将v添加到1个基本索引数组中从x到y的所有元素,然后将它们模数为M。

for (i = x; i <= y; i++)    
    A[i] += v;
    A[i] %= M; 

查询2:2 x y v :这意味着将v乘以1个基本索引数组中x到y的所有元素,然后将它们模数为M。

for (i = x; i <= y; i++)    
    A[i] *= v
    A[i] %= M

查询3:3 x y v:这意味着将v替换为1个基本索引数组中从x到y的所有元素。

for (i = x; i <= y; i++)    
    A[i] = v 

查询4:4 x y:这是一个报告查询,需要查找A中从x到y的值的总和,即

sum = 0;
for (i = x; i <= y; i++)
    sum += A[i]
    sum %= M
Output sum.

现在如何处理这些查询?我知道处理查询,如果它是与分段树的加法和求和查询。但不知道这个。请帮我解决这个问题。

约束条件:1≤N,Q≤10^ 5且1≤A[i]的初始值,v≤10^ 9

0 个答案:

没有答案