就是ba區間的每乙個值都變成某個數。
//poj 3468 區間add,區間查詢
#include#include#includeusing namespace std;
//每當有add加到i節點上,不會去更新i節點的sum.
//也就是說如果要查詢區間[1,n]的sum值,既要考慮sum[i]的值,也要考慮add[i]的值
const int maxn=100000+100;
typedef long long ll;
#define lson i*2,l,m
#define rson i*2+1,m+1,r
int sum[maxn*4];
int addv[maxn*4];
//i節點收集下面節點的資訊
void pushup(int i,int num)
//將i節點的addv壓下去,且更新sum[i]
void pushdown(int i,int num)}
//sum[i]收集子節點的資訊
//只在build線段樹時會用
void pushup(int i)
void build(int i,int l,int r)
int m=(l+r)/2;
build(lson);
build(rson);
pushup(i,r-l+1);}
//給[ql,qr]區間加上add值
void update(int ql,int qr,int add,int i,int l,int r)
pushdown(i,r-l+1);
int m=(l+r)/2;
if(ql<=m) update(ql,qr,add,lson);
if(mpushup(i,r-l+1);}
//查詢[ql,qr]區間的sum值
int query(int ql,int qr,int i,int l,int r)
pushdown(i,r-l+1);
int m=(l+r)/2;
int res=0;
if(ql<=m) res+=query(ql,qr,lson);
if(mreturn res;
}
HDU 1698 《線段樹,區間set
題目連線 題意 一條長為n的銅鍊子,每個結點的價值為1。有兩種修改,l,r,z z 2 表示把 l,r 區間內鍊子改為銀質,價值為2.z 3 表示把 l,r 區間內鍊子改為金質,價值為3.線段樹,區間重設,求和。include include using namespace std const in...
hdu1698 區間改變 lazy線段樹
include using namespace std const int maxn 100010 struct nodetree maxn 4 int a maxn 4 void pushdown int id,int date 只往下push一層 tree id 1 sum date tree ...
hdu 1698 區間更新
基礎題 初學 include include using namespace std define lson l m rt 1 define rson m 1 r rt 1 1 const int maxn 101000 int h w n int col maxn 2 標記是否當前節點梗係 int...