二維線段樹

2021-07-04 14:40:11 字數 1054 閱讀 1615

二維線段樹矩陣區間查詢最大值

/* 矩陣求和預處理後o(1)就能算出來,不用線段樹,除非有修改操作

*/先第一維在第二維,注意建樹有個順序問題,

應該讓第一維度的先建完然後再建第二個維度

具體看**

#include 

#include

#include

using namespace std;

const int maxn=1005;

const int maxm=1005;

struct node

;struct tree

s[4*maxn];

int a[maxn][maxm];

int suma[maxn][maxm]=;

void build_(int l,int r,int

x,int fax,int fal,int far)

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

build_(l,mid,2

*x,fax,fal,far);

build_(mid+1,r,2

*x+1,fax,fal,far);

s[fax].sub[x].max=max(s[fax].sub[2

*x].max,s[fax].sub[2

*x+1].max);

}void build(int l,int r,int

x,int l_,int r_)

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

build(l,mid,2

*x,l_,r_);

build(mid+1,r,2

*x+1,l_,r_);//先把第一維的子區間的資訊算出來

build_(l_,r_,1,x,l,r);//再算第一維對應的第二維的資訊

}int query_(int l,int r,int

x,int fax)

int query(int l,int r,int

x,int l_,int r_)

int main()

二維線段樹

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

二維線段樹

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

二維 MLE 線段樹

關於二維線段樹,ta死了 先來看看兩種二維線段樹的打法 1.四叉樹 然而ta死了,ta是 theta n 的,加上線段樹的常數,t 飛穩 2.線段樹套線段樹 我盡量畫出來.圖中每個方塊是一棵線段樹 畫完長這樣 你們湊合看吧,作者已經半卒了 區域性放大圖 現在每個圓點代表真正的乙個點 接下來的講解以今...