二維 MLE 線段樹

2022-03-16 17:20:15 字數 1085 閱讀 3023

關於二維線段樹,ta死了

先來看看兩種二維線段樹的打法

1.四叉樹

然而ta死了,ta是$\theta (n)$的,加上線段樹的常數,$t$飛穩

2.線段樹套線段樹

我盡量畫出來...

圖中每個方塊是一棵線段樹

畫完長這樣(你們湊合看吧,作者已經半卒了)

區域性放大圖

現在每個圓點代表真正的乙個點

接下來的講解以今天的題為例(題面就不放了)

先說區間修改

假設我們現在要給圖中的$9$個綠點賦值(仔細找,相信你能找到

按照一維線段樹的做法,我們會修改這六個綠點

但這是$\theta (nlogn)$的,會$t$

我們可以是這對藍點進行操作

然後我們就可以只修改圖中的四個綠點了

**:

struct tree

t[maxn<<2];

void down(int k)

void change(int k,int l,int r,int l,int r,int v)

down(k);int mid=(l+r)>>1;

if(l<=mid) change(l(k),l,mid,l,r,v);

if(mid

}

二維線段樹

二維線段樹一般用樹套樹的方式實現,每個外層線段樹的節點對應一顆內層線段樹,整個線段樹存放在乙個二維陣列中。二維線段樹 poj2155 include include include include include include include include include include inc...

二維線段樹

二維線段樹矩陣區間查詢最大值 矩陣求和預處理後o 1 就能算出來,不用線段樹,除非有修改操作 先第一維在第二維,注意建樹有個順序問題,應該讓第一維度的先建完然後再建第二個維度 具體看 include include include using namespace std const int maxn...

二維線段樹

一維線段樹用來維護一維的空間,即乙個線段。二維線段樹用來維護二維的空間,即乙個矩形。二維線段樹的每個結點都是一棵一維線段樹,所以結構體陣列要開二維,再加上線段樹本身的性質,會占用很大記憶體,要儘量減少結構體內儲存的值的個數和長度,考慮到每個節點表示的線段的左右端點可以作為函式引數,所以不再儲存在結構...