題目鏈結
對樣例的樹這樣畫w
從上到下標區間
【0-4】這個是tree
【0-2】是tree
【3-4】是tree
【0-1】是tree
是tree
是tree
是tree
是tree
是tree
接下來的都是空結點
然後看**叭
#include
using
namespace std;
#define max_len 500040
#define maxn 100010
//儲存還可以用結構體陣列——這樣就可以不用傳這麼多引數了www
long
long tree[max_len]
;long
long arr[max_len]
;long
long tag[max_len]
;long
long m,n;
void
build_tree
(long
long node,
long
long start,
long
long end)
//node表示樹的下標——從上到下標噠;
long
long mid=
(start+end)
>>1;
build_tree(2
*node+
1,start,mid)
;build_tree(2
*node+
2,mid+
1,end)
; tree[node]
=tree[node*2+
1]+tree[node*2+
2];}
void
add(
long
long node,
long
long l,
long
long r,
long
long v)
//push_down 標記下傳函式
void
push_down
(long
long node,
long
long start,
long
long end,
long
long mid)
//modify_tree區間修改函式
void
modify_tree
(long
long node,
long
long start,
long
long end,
long
long x,
long
long y,
long
long v)
long
long mid=
(start+end)
>>1;
push_down
(node,start,end,mid);if
(x<=mid)
modify_tree(2
*node+
1,start,mid,x,y,v);if
(y>mid)
modify_tree(2
*node+
2,mid+
1,end,x,y,v)
; tree[node]
=tree[
2*node+1]
+tree[node*2+
2];}
long
long
query_tree
(long
long node,
long
long start,
long
long end,
long
long l,
long
long r)
intmain()
else
}return0;
}
好叭 其實不用辣麼多longlong噠……陣列裡面的下標不用longlong陣列的值大小還是要longlong叭……ww P3372 線段樹模版1
藉著題解系統得梳理一下對於線段樹的理解 先建立乙個結構體為下面 實現打基礎 struct treet 1000005 首先,什麼是線段樹呢?線段樹屬於完全二叉樹,其中每乙個子節點而言,都表示整個序列中的一段子區間。由第一層結點儲存單個元素,每個子節點不斷向自己的父親節點傳遞資訊,而父節點儲存的資訊則...
洛谷 P3372 線段樹模版題
如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數加上x 2.求出某區間每乙個數的和 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含3或4個整數,表示乙個操作,具體如下...
P3372 模板 線段樹 1
線段樹學習 這個題來看,線段樹分為建樹,更新,查詢。1.建樹 void build ll p,ll l,ll r ll mid l r 1 build lson p l,mid build rson p mid 1,r push up sum p void push up sum ll p 這段 的...