所以我试图解决这个编程问题。给定一个数组和一些查询的数组。每个查询都会给出三个数字a,b,c,并要求您回答从索引a到索引b(均包括在内)中小于或等于c的所有元素的总和。子阵查询
例如:
鉴于阵列:{2,4,6,1,5,1,6,4,5,4}
3个查询被回答:
2 4 4 - > ANS = 5即{4 + 1}
1 5 3 - > ANS = 3即{2 + 1}
4 5 1 - > ANS = 1
每个在阵列中的值小于10^5,阵列长度和查询次数可以高达10^5
这是我所做的我用莫氏算法(平方根分解)对查询进行排序,并创建一个二进制索引树,用于存储元素累积和小于1-10^5中所有值的元素,并使更新从查询移动到查询。使用这种算法,我的解决方案的总体复杂度为O(q * sqrt(N)* log(N)),但速度不够快。我正在寻找更好的算法。我认为查询的平方根分解不起作用。有没有更好的算法来解决这个问题?
我想知道如果一些数据结构可以解决这个问题,我不知道?
你的意思是“a”,“b”,“c”是索引?你在使用从零开始的索引吗? – Bahrom
@Bahrom a和b是基于'1'的索引,c是一个数字。 – ash