给定一个长度为N的数组。我需要对这个数组执行某些操作,这些操作有两种类型:
Update a range [x...y]: In which we must divide each number in the given range [x...y] by K.(This division is integer division)
Query a range [x...y]: In which we must output the sum of all the numbers presently in range [x...y].
示例:假设我们有N = 5,K = 2且数组为{1,1,1,1,5} .let,我们有Q(= 5)个查询如下:
2 1 5
1 1 2
2 1 5
1 5 5
2 1 5
然后在此输出中将是:
9
7
4
现在我知道要解决少量查询,但如果Q和N很大,怎么做呢。
答案 0 :(得分:0)
我没有准确地提出你的问题。但我理解查询...
- >当您对像
这样的输入运行多个查询时例如: 如果您在范围[2000,10000]中有第一个查询,在范围[2000,4000]中有第二个查询 你最后多次添加这些数字,这很糟糕。
- >尝试使用累积频率的概念。
例如:
1. Compute the cumulative sum for all indexes [0...n-1] in Array.
2. Now, When you need sum for a certain query [x...y] then just do
Array[y]-Array[x-1].....which would be direct result.
3. Believe me this would save you lot of computation.
4. This concept is similar to Dynamic Programming(try Googling it!!)