poj3468 線段樹成段更新模板

2021-06-08 17:55:40 字數 975 閱讀 2194

#include #include #include #include #include using namespace std;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define clear(a) memset(a,0,sizeof(a))

const int n=101000;

__int64 col[n<<2],sum[n<<2];

void pushup(int rt)

void pushdown(int l,int r,int rt)

} void build(int l,int r,int rt)

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

build(lson);

build(rson);

pushup(rt);

}__int64 query(int l,int r,int l,int r,int rt)

pushdown(l,r,rt);

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

__int64 res=0;

if (l<=m) res+=query(l,r,lson);

if (r>m) res+=query(l,r,rson);

return res;

}void update(int l,int r,int add,int l,int r,int rt)

pushdown(l,r,rt);

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

if (l<=m) update(l,r,add,lson);

if (r>m) update(l,r,add,rson);

pushup(rt);

}int main()

else}}

return 0;

}

POJ 3468 線段樹成段更新

題意就是給了一串行的數.然後不斷的問一段的值或者在一段上每個數加乙個數.輸出每次詢問的值.初看這題感覺就是最一般的線段樹成段更新的應用.但下手後發現很多細節.對於一向很粗心的我調了很久才給調出來.成段更新前一文已經提到過.這裡再通過這一題補充一些很值得注意的地方 1 前乙個題因為只有最後才要輸出一段...

POJ 3468 線段樹成段更新

很久以前的題目再做一遍複習一下。要點 1 約定在任何時候 add num 到達節點的時候就立即更新節點的 sum 值。2 每次更新節點回溯的時候記得維護節點的 sum 值。3 執行詢問操作的時候,遇到 lazy 標記為1 的時候往下 push down,同時記得第一點 4 遇到符合要求的詢問區間時,...

poj 3468線段樹 成段更新

題意和題目都很簡單,就是線段樹的成段更新,只要做一下延遲標記就好了。題意 查詢一段數的和,和更新一段數的值。一開始出了點錯誤,忘在更新時做延遲標記了。includelong long sum 100010 2 long long add 100010 2 void push up int rt vo...