所以我試圖解決這個編程問題。給定一個數組和一些查詢的數組。每個查詢都會給出三個數字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