线段树模板复习
来源:互联网 发布:中信建投网上交易软件 编辑:程序博客网 时间:2024/06/11 13:35
bulid
procedure bulid(v,l,r:longint);var mid:longint;begin mark[v]:=0; if l=r then tree[v]:=a[l] else begin mid:=(l+r) >> 1; bulid(v+v,l,mid); bulid(v+v+1,mid+1,r); tree[v]:=tree[v+v]+tree[v+v+1]; end; end;
单点修改的线段树维护
单点修改
procedure modify(v,l,r,i,val:longint);var mid:longint;begin if l=r then begin tree[v]:=tree[v]+val; exit; end; mid:=(l+r) >> 1; if i<=mid then modify(v+v,l,mid,i,val) else modify(v+v+1,mid+1,r,i,val); tree[v]:=tree[v+v]+tree[v+v+1];end;
查找
function search(v,l,r,x,y:longint):longint;var mid:longint;begin if (l=x) and (r=y) then exit(tree[v]); mid:=(l+r) >> 1; if y<=mid then exit(search(v+v,l,mid,x,y)) else if x>=mid+1 then exit(search(v+v+1,mid+1,r,x,y)) else exit(search(v+v,l,mid,x,mid)+search(v+v+1,mid+1,r,mid+1,y)); end;
区间修改线段树维护
区间修改
procedure modify(v,l,r,x,y,val:longint);var mid:longint;begin //writeln(v,' ',l,' ',r,' ',x,' ',y,' ',val); if (l=x) and (r=y) then begin mark[v]:=mark[v]+val; exit; end; mid:=(l+r) >> 1; mark[v+v]:=mark[v+v]+mark[v]; mark[v+v+1]:=mark[v+v+1]+mark[v]; mark[v]:=0; if y<=mid then modify(v+v,l,mid,x,y,val) else if x>=mid+1 then modify(v+v+1,mid+1,r,x,y,val) else begin modify(v+v,l,mid,x,mid,val); modify(v+v+1,mid+1,r,mid+1,y,val); end; tree[v]:=tree[v+v]+tree[v+v+1]+mark[v+v]*(mid-l+1)+mark[v+v+1]*(r-mid);end;
查找
function search(v,l,r,x,y:longint):int64;var mid:longint;begin if (l=x) and (r=y) then exit(tree[v]+(r-l+1)*mark[v]); mid:=(l+r) >> 1; if y<=mid then exit(search(v+v,l,mid,x,y)+(y-x+1)*mark[v]) else if x>=mid+1 then exit(search(v+v+1,mid+1,r,x,y)+(y-x+1)*mark[v]) else exit(search(v+v,l,mid,x,mid)+search(v+v+1,mid+1,r,mid+1,y)+(y-x+1)*mark[v]); end;
阅读全文
0 0
- 线段树模板复习
- 线段树复习
- 复习线段树
- 复习线段树
- 【线段树】线段树及其相关 复习
- POJ 3468 【线段树复习】
- ACM 线段树模板(模板)
- 线段树模板
- hdu_1166_线段树模板
- 线段树模板
- 线段树模板 poj2777
- 线段树模板
- 线段树模板
- 线段树-模板
- 线段树模板
- 线段树模板
- 线段树模板
- Hdu1166-- 线段树模板
- PhoneGap开发环境搭建
- Jzoj4307 喝喝喝
- unity 从头开始制作类dota2小地图
- 系统管理与系统安全命令
- bzoj 4397: [Usaco2015 dec]Breed Counting 乱搞
- 线段树模板复习
- 人闲钱不闲 长假理财七招
- [简单题]自定义取余(三种解法)C++实现
- Gartner十大IT预测:七大数字巨头,有五家将心甘情愿“自我颠覆”
- 原来你是这样子的OpenAI!来看看它背后那些有趣的人和事
- 你所未知的人工智能应用领域
- 洛谷 2892 [USACO07OPEN] Fliptile 子集枚举+模拟
- 最新 UltraEdit 24.20 注册成功经验分享
- two