我試圖解決this算法的問題,我遇到了這個很好的解決方案:二進制索引樹的應用
「我們的想法是對待一個我,B 我和 Ç我們使用c i作爲值, b i作爲關鍵字,它們按照公司的順序插入給我一個 i。此 方式,對於每一個我反過來,該數據結構允許對C的 最小值查詢Ĵ(可能∞)對於b Ĵ在[1..b 我)和 一個 j < a i。我們有çĴ <Ç我當且僅當參賽者我不 優秀。」
現在我有很難理解這一解決方案。
這裏是我理解這個解決方案:我知道二叉索引樹用於回答查詢,比如在數組中找到一個區間的總和,它也支持元素中的更新,它在O(logn)時間複雜度中執行兩個操作。 s解決方案表示,我們建立密鑰爲BIT,其密鑰爲c i,並且值爲b i,基本上b i是附加值,與每個節點一起使用。現在,我們在樹中插入元素,增加值 i,這是我失去抓地力的地方。我們插入節點的順序以及聲明在這個部分後面說的是什麼,我不知道。
請幫我理解這個解決方案是什麼意思。
好吧,我明白了,但它讓我思考如果有4列是可以做到這樣的事情?我的意思是有可能解決使用這個概念與列> 4或這個問題只是爲c = 3。 – ash
@ash您可以用2-D分段樹而不是BIT來求解2列。一般來說,可以用'k-2'維分段樹來解決'k-D'版本。它顯然變得更加複雜,實現更高維度的工作速度更慢。事實上,很有可能開始放棄一個天真的'O(N^2)'大'k'。所以是的,它僅適用於3-D。 – kraskevich