注意事項:1.記住要清除標記
2.查詢時要下放標記,但沒必要向上更新
#include#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define maxn 111111
#define ll long long
ll sum[maxn<<2];
ll mark[maxn<<2];
int pushup(int rt)
int build(int l,int r,int rt)
int m=(l+r)>>1;
build(lson);
build(rson);
pushup(rt);
}int pushdown(int rt,int m)
}int updata(int l,int r,int c,int l,int r,int rt)
pushdown(rt,r-l+1);
int m=(l+r)>>1;
if(m>=l) updata(l,r,c,lson);
if(m>1;
ll temp=0;
if(m>=l) temp+=query(l,r,lson);
if(m
poj3468 線段樹成段更新模板題
題意 包括兩個操作 1 將 a.b 上的數字加上v 2 查詢區間 a,b 上的和 下面的介紹是下解題思路 首先介紹 lazy tag思想 用乙個變數記錄每乙個線段樹節點的變化值,當這部分線段的一致性被破壞我們就將這個變化值傳遞給子區間,大大增加了線段樹的效率。比如現在需要對 a,b 區間值進行加c操...
POJ 3468 線段樹成段更新
題意就是給了一串行的數.然後不斷的問一段的值或者在一段上每個數加乙個數.輸出每次詢問的值.初看這題感覺就是最一般的線段樹成段更新的應用.但下手後發現很多細節.對於一向很粗心的我調了很久才給調出來.成段更新前一文已經提到過.這裡再通過這一題補充一些很值得注意的地方 1 前乙個題因為只有最後才要輸出一段...
poj 3467 線段樹成段更新
題意 略 分析 可設一另設兩個域sum 和d分別表示該區間的當前和與該區間的每個元素的增量,之後維護線段樹即可!再次感慨 能力 include using namespace std int64 sum1 int a 100005 struct node tree 1000000 void crea...