1. 程式人生 > >數據結構(二維)方陣問題總結:ST算法、樹狀數組、線段樹、樹套樹

數據結構(二維)方陣問題總結:ST算法、樹狀數組、線段樹、樹套樹

以及 當我 介紹 隊列 很多 靜態 我們 。。 兩個

當我們把區間問題拓展到二維的方陣問題的時候,很多東西,其實就不會再去求那麽難的東西了,二維問題主要考察的是從一維到二維的一個轉化和拓展

然後,我們還是以靜態方陣->帶修方陣的順序來介紹,至於動態方陣,我們可以參考精準覆蓋問題的DLX算法中使用的數據結構,那就是舞蹈鏈,除此以外,在NOIP2017的day2T3,隊列一題我們也可以有著啟發

然而動態方陣與我們這些老套的數據結構還是脫軌的,此處就不介紹了(強行解釋一波)

先說靜態方陣,我們針對靜態方陣無非就是查詢,查詢子矩陣的最值或者求子矩陣的和,對於查詢子矩陣的最值來說,我們有二維的ST算法撐腰:https://www.cnblogs.com/aininot260/p/9379833.html

而對於子矩陣和的問題,二維的前綴和也是可以勝任的

考慮帶修方陣問題,我們如果是修改點查詢矩陣,修改矩陣查詢點,修改矩陣查詢矩陣,可以直接扔給二維樹狀數組來做,基本秒殺:https://www.cnblogs.com/aininot260/p/9336527.html

而對於修改區間查詢區間最值的問題,我們交給功能強大的二維線段樹來做(這裏是樹套樹的形式,比四分樹更加契合):https://www.cnblogs.com/aininot260/p/9375048.html

我們在區間問題裏面曾經引出了一個帶lazy tag的,功能無比強大的線段樹,但是功能如此強大的二維線段樹的板子,至今還是無能為力

對於三維區間問題,我們在二維樹狀數組裏面給出了三維樹狀數組的模板,並給出了點修改區間查詢和區間修改點查詢的例子,將二維樹狀數組的區間修改區間查詢拓展到三維形式

。。就是傳說中的三維區間的修改和查詢了,是不是很帥。。

總的來說,有了二維樹狀數組以及二維ST這兩個東西,這些模板題都是沒有問題的

數據結構(二維)方陣問題總結:ST算法、樹狀數組、線段樹、樹套樹