二維線段樹

2021-06-22 22:59:56 字數 1171 閱讀 5114

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

二維線段樹 poj2155;

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define max 1010

#define inf int_max

#define eps 1e-6

using namespace std;

int c[3*max][3*max],n;

void update_x(int rooty,int rootx,int l, int r, int x1,int x2)

int mid = l + (r - l) / 2;

if (x2 <= mid) update_x(rooty,rootx*2+1, l, mid, x1, x2);

else if (x1 > mid) update_x(rooty, rootx*2+2, mid+1, r, x1, x2);

else

return;

}void update_y(int rooty, int l, int r, int x1, int x2, int y1, int y2)

int mid = l + (r - l) / 2;

if (y2 <= mid)

else if (y1 > mid)

else

return;

}int res;

void query_x(int rooty,int rootx,int l, int r, int x)

if (l == r) return;

int mid = l + (r - l) / 2;

if (x <= mid)

else

}void query_y(int rooty,int l, int r, int x, int y)

else

}int main()

else

} if (t) printf("\n");

} return 0;

}

二維線段樹

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

二維線段樹

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

二維 MLE 線段樹

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