POJ 2155 Matrix 二維樹狀陣列

2022-05-25 14:00:19 字數 1171 閱讀 9310

poj2155

樓教主出的題,是二維樹狀陣列非常好的題,還結合了開關問題(開關變化的次數如果為偶數,狀態不變,奇數狀態相反)。

題意就是給了乙個二維的座標平面,每個點初始值都是0,然後給乙個矩形的區域,對該區域的點的狀態進行反轉。然後在中間插有查詢,查該點的狀態。

其實,還是對反轉次數的乙個研究,這裡為了能快速的查詢乙個點的反轉次數,加上又是二維,且有區間修改,所以選擇二維樹狀陣列進行處理,整個二維陣列記錄的就是反轉的次數。

每反轉一次,就對整個矩形區間進行修改,反轉次數加1,最終查詢的時候就是查一共反轉了多少次,記得取餘2,如果是偶數,就不變,是奇數,就變1。

注意處理二維樹狀陣列區間更新的時候,假設給的矩形對角線的點為(x1,y1),(x2,y2)。那麼更新的時候是

$add(x1,y1,v) + add(x1,y2+1, -v) + add(x2+1, y1, -v)  + add(x2+1,y2+1,v)$

為什麼這樣,看下圖,因為你如果只更新(x1,y1),那麼就會更新多的區域,就要想辦法減去,但是減了之後,發現又減重了一部分,所以需要又加回來。

POJ 2155 Matrix 二維樹狀陣列

又是一道樹狀陣列的題目,而且是一道二維的好題 題目要求是,一些操作,可能是對某個矩陣內的所有值取反,可能是問的是某個位置的值 如圖 假如我們要把b矩陣的所有值都取反,我們只需要操縱矩陣的四個頂點即可,更新左下角頂點的值增1相當於把區域abcd的變換次數增1,左上角頂點的值增1,相當於區域ac的變換次...

二維線段樹 POJ 2155 Matrix

風格 www.notonlysuccess.com 題目大意 剛開始,整個矩陣為0 c操作 對乙個矩陣進行0,1取反 q操作求該點的數字是什麼 演算法 二維線段樹,具體自己模擬吧 include include include include include include include incl...

POJ 2155 Matrix 二維線段樹

題目大意 乙個二維座標軸上有很多點,點不是0就是1。然後又兩種操作。c 改變以 x1,y1 為左上頂點 x2,y2 為右下頂點 中的每乙個點 0變1 1變0 q 輸出 a x y 然後每次改變都取異或 這樣的話就意味著改變偶數次就變回來了 奇數次的話就是做了改變的 include include i...