线段树模板
来源:互联网 发布:linux grep命令 递归 编辑:程序博客网 时间:2024/06/18 12:35
单点更新,区间求和:
#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int NV = 100005;int sum[NV<<2];void PushUp(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void build(int l,int r,int rt=1){ if (l == r) { sum[rt]=0; return ; } int m = (l + r) >> 1; build(lson); build(rson); PushUp(rt);}void update(int L,int c,int l,int r,int rt=1){ if (L == l && l == r) { sum[rt] += c; return ; } int m = (l + r) >> 1; if (L <= m) update(L , c , lson); else update(L , c , rson); PushUp(rt);}int query(int L,int R,int l,int r,int rt=1){ if (L <= l && r <= R) return sum[rt]; int m = (l + r) >> 1; int ret = 0; if (L <= m) ret += query(L , R , lson); if (m < R) ret += query(L , R , rson); return ret;}int main(){ return 0;}
区间更新,区间求和:
#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int NV = 100005;long long add[NV<<2],sum[NV<<2];void PushUp(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void PushDown(int rt,int m){ if (add[rt]) { add[rt<<1] += add[rt]; add[rt<<1|1] += add[rt]; sum[rt<<1] += add[rt] * (m - (m >> 1)); sum[rt<<1|1] += add[rt] * (m >> 1); add[rt] = 0; }}void build(int l,int r,int rt=1){ add[rt] = 0; if (l == r) { scanf("%lld",&sum[rt]); return ; } int m = (l + r) >> 1; build(lson); build(rson); PushUp(rt);}void update(int L,int R,long long c,int l,int r,int rt=1){ if (L <= l && r <= R) { add[rt] += c; sum[rt] += c * (r - l + 1); return ; } PushDown(rt , r - l + 1); int m = (l + r) >> 1; if (L <= m) update(L , R , c , lson); if (m < R) update(L , R , c , rson); PushUp(rt);}long long query(int L,int R,int l,int r,int rt=1){ if (L <= l && r <= R) { return sum[rt]; } PushDown(rt , r - l + 1); int m = (l + r) >> 1; long long ret = 0; if (L <= m) ret += query(L , R , lson); if (m < R) ret += query(L , R , rson); return ret;}int main(){ return 0;}
0 0
- ACM 线段树模板(模板)
- 线段树模板
- hdu_1166_线段树模板
- 线段树模板
- 线段树模板 poj2777
- 线段树模板
- 线段树模板
- 线段树-模板
- 线段树模板
- 线段树模板
- 线段树模板
- Hdu1166-- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- poj3159(差分约束)
- Orz教主第五次模拟(做题情况+题目分析+代码)[未完]
- springMVC源码下载
- UVa 11538 - Chess Queen (组合数学)
- editplus创建时候的几个注意事项
- 线段树模板
- day01
- HDU 4952 Number Transformation 数论
- Hdu4952 - Number Transformation - 数论(2014 Multi-University Training Contest 8)
- 第五天-8.14
- 利用java序列化进行对象深Clone
- HDU 4950 Monster
- 一元多项式的表示及相加
- HDU 1285 确定比赛名次