分塊 學習筆記

2022-08-19 14:39:13 字數 615 閱讀 6357

sn=(int)sqrt(n);

if(n/sn>=mx) sn=n/mx;//mx為塊的極限大小,若卡空間時用,這時陣列與塊數量有關的部分可以開小,與塊大小有關的部分則要開大,注意。。

int loc(int x)

int getl(int x)

int getr(int x)

1)字首塊資訊,每塊n個資訊$n\sqrt n \(

2)塊到塊資訊,每塊\)\sqrt n\(個資訊\)(\sqrt n)^3=n\sqrt n \(

3)所某塊的左端點到右邊任意位置的資訊,\)n\sqrt n \(

這個最好開\)\sqrt n \sqrt n \(陣列,每塊留乙個0的空位,最後留乙個sn的位置記整塊總和

**可以\)o(\sqrt n)\(維護\)o(1)$詢問解決單點修改區間查詢問題*

bl,br表示第bl塊-第br塊

l,r表示bl塊的左端點及br塊的右端點

x, y為詢問區間

bl=loc(x),br=loc(y);

if(bl+1>=br)

else

預處理陣列時注意 初始化

分塊 學習筆記

當我們對於乙個很大陣列 1e5 進行區間修改和區間查詢時,我們會想到線段樹的 nlog n 的優秀效率。分塊 優雅的暴力!我們將區間分成每個大小為 s 的小塊,這樣我們的複雜度就會從 n 降到 frac n s 的效率。我們先將陣列分成長度為 s 小塊,用原下標除以 s 向上取整,就是他分塊後的小塊...

分塊學習筆記

在我不知道分塊以前,我一直以為分塊是乙個非常牛逼的東西。在我多次學習並且處於懵逼狀態的時候,我一直以為這輩子我不會分塊了。直到一天我學會了他。ps 乙個小建議,學習新知識要在上午哦 下面我就把剛剛學會的分塊做了一下總結。主要思想 分塊是乙個很暴力的演算法,跟普通的列舉暴力差不了多少。對於乙個長度為n...

分塊 學習筆記

前言 內容參考自感謝。分塊,是一種優雅的暴力,它通過對數列分段,完成對數列一些區間操作和區間查詢的操作,是一種根號演算法。本文屬於分塊入門筆記,旨在零基礎的同學學會分塊。1 建塊 在建塊伊始,我們需要完成一下幾個任務 1.確定塊的大小 2.確定塊的數量 3.標記每個塊的左右邊界 4.標記每個元素所屬...