#include#includeusing
namespace
std;
#define maxn 200005
class
nodenode[maxn];
int getright(int n)
void build(int l,int r,int num)
node[num].l=l;node[num].r=r;node[num].add=0;node[num].sum=0
; build(l,(l+r)/2,num*2
); build((l+r)/2+1,r,num*2+1);}
void add(int o,int l,int r,int v)
else
}//維護節點o
if(node[o].l!=node[o].r)
else node[o].sum=0
; node[o].sum+=node[o].add*(node[o].r-node[o].l+1);}
//這裡addadd是從上往下這條路的累計addadd值[一同回溯記錄這條路節點所有add之和,減少了一次回溯累加add值]
//初始時直接令其為0
int sum=0
;void ask(int o,int l,int r,int addadd)
else
}}int
main()
char str[10
]; cout
<<"
case
"<"
:\n"
;
bool ok=1
;
while
(ok)}}
return0;
}
資料結構 線段樹模板
雖然看著挺長,但是其中有很多注釋,同時也可作為洛谷p3372的題解。從第10行看即可。file 線段樹模板 預設下標從0開始,see startat 如果很閒,可以包裝成模板類打發時間 include if cplusplus 201103l typedef unsigned long uint32...
模板 線段樹 資料結構 線段樹練習題三
給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。乙個n,乙個l,n行x1,x2,color 被分成多少段 4 2010191 29...
資料結構 線段樹
啦啦啦啦啦啦線段樹是個好東西 好吧並沒有什麼好的 但貌似還是很好啊 線段樹就是一棵樹!顧名思義 又是這個詞 就是求關於一段的某些什麼什麼東西。比如區間最大值啊什麼的。引用百科知識 線段樹是一種二叉搜尋樹,與區間樹相似,它將乙個區間劃分成一些單元區間,每個單元區間對應線段樹中的乙個葉結點。對於線段樹中...