分桶法(bucket method)是把一排物品或者平面分成桶,每個桶分別維護自己內部的資訊,以達到高校計算的目的的方法。
其中,平方分割(sqrt decomposition)是把排成一排的n個元素每n(1/2)分在乙個桶內進行維護的方法的總稱。這樣的分割方法可以使對區間操作的複雜度降至o(n(1/2))
和線段樹一樣,根據維護的資料的不同,平分割可以支援很多不同的操作。
給定乙個數列a1,a2,…,an,目標是在o(n(1/2))的複雜度內實現以下兩種功能。
令b=floor(n(1/2)),把a中的元素每b就分為乙個桶,並且計算出每個桶內的最小值。
在更新元素的時候,需要更新該元素所在的桶的最小值。這時候只需要遍歷一邊桶內的元素就好了。
在更新值得時候,因為每個桶內有b個元素,所以複雜度是o(b)=o(n(1/2))
而在查詢時
因為查詢的個數m很大,樸素的球閥無法在規定時間內求出解,因此應該選用合理的方式維護資料來進行高效的查詢。
如果x是滴k個數,那麼一定有
分桶法和平方分割
分桶法 bucketmethod 是把一排物品或者平面分成桶,每個桶分別維護自己內部的資訊,以達到高效計算的目的的方法。其中,平方分割 sqrtdecomposition 是把排成一排的n個元素每根號n個分在乙個桶內進行維護的方法的統稱。這樣的分割方法可以使對區間的操作的複雜度降至o 根號n 和線段...
靜態區間第k大(分桶法和平方分割)
poj 2104為例 挑戰程式設計競賽 中介紹的方法。分桶法 把一排物品或者平面分成桶,每個桶分別維護自己內部的資訊,已達到高效計算的目的。設一共有 n個數,每 b個分到乙個桶裡,並對桶內元素進行排序。給定區間,求小於x的數的個數如果b n 那麼這就叫平方分割,查詢過程時間複雜度為o n logn ...
關於分桶法(平方分割)的一些見解
分桶法 給乙個n個元素的陣列a 0.n 分桶法的思想是將這n個元素進行均分,均分成 n組,每組裡有 n個元素,這裡 組 的意思與 桶 等價。這種分法也稱之 平方分割 這樣會帶來哪些處理上的好處呢?其實類似於線段樹,分桶法的思想也是每個桶分別維護各自桶內部的資訊,然後在處理區間問題上帶來快捷。這裡以r...