南阳网站排名,制作短视频的软件有哪些,深圳中装建设公司,网站设计公司推荐单点修改 单点查询 用普通数组就能写出来 单点修改 区间查询 用线段树 树状数组#xff1b; 区间修改 区间查询 用线段树 树状数组#xff1b; 区间修改 单点查询 用线段树 树状数组#xff1b; 建树 #includebits/stdc.h
using namespace std;
…单点修改 单点查询 用普通数组就能写出来 单点修改 区间查询 用线段树 树状数组 区间修改 区间查询 用线段树 树状数组 区间修改 单点查询 用线段树 树状数组 建树 #includebits/stdc.h
using namespace std;
const int maxn1e5;
struct node
{int l,r,w;
}tree[4*maxn1];
void build(int l,int r,int k)
{tree[k].ll; tree[k].rr;if(lr) { cintree[k].w; return ; }int mid(lr)/2;build(l,mid,2*k);build(mid1,r,2*k1);tree[k].wtree[2*k].wtree[2*k1].w;
}
int main()
{build(1,8,1);
} 建树 单点查询 #includebits/stdc.h
using namespace std;
const int maxn1e5;
struct node
{int l,r,w;
}tree[4*maxn1];
void build(int l,int r,int k)
{tree[k].ll; tree[k].rr;if(lr) { cintree[k].w; coutl--tree[k].wendl; return ; }int mid(lr)/2;build(l,mid,2*k);build(mid1,r,2*k1);tree[k].wtree[2*k].wtree[2*k1].w;
}
int ask(int x,int k)// dian dian cha xun;
{if(tree[k].ltree[k].r) {return tree[k].w; }int mid(tree[k].ltree[k].r)/2;if(xmid) return ask(x,2*k);else return ask(x,2*k1);}
int main()
{build(1,8,1);//for(int i1;i8;i) coutask(i)endl;coutask(1,1)endl;coutask(7,1)endl;
} 单点查询 单点修改(改变一个节点的值在一个节点上加值) #includebits/stdc.h
using namespace std;
const int maxn1e5;
struct node
{int l,r,w;
}tree[4*maxn1];
void build(int l,int r,int k)
{tree[k].ll; tree[k].rr;if(lr) { cintree[k].w; /*coutl--tree[k].wendl;*/ return ; }int mid(lr)/2;build(l,mid,2*k);build(mid1,r,2*k1);tree[k].wtree[2*k].wtree[2*k1].w;
}
int ask(int x,int k)// dian dian cha xun;
{if(tree[k].ltree[k].r) {return tree[k].w; }int mid(tree[k].ltree[k].r)/2;if(xmid) return ask(x,2*k);else return ask(x,2*k1);}
void change(int x,int y,int k)// 将 节点 x 修改为y
{if(tree[k].ltree[k].r){ tree[k].wy; return; }int mid(tree[k].ltree[k].r)/2;if(xmid) return change(x,y,2*k);else return change(x,y,2*k1);
}
void changeodd(int x,int y,int k)// 将 节点 x 修改为y
{if(tree[k].ltree[k].r){ tree[k].wy; return; }int mid(tree[k].ltree[k].r)/2;//cout tree[k].l tree[k].rendl; coutmidendl;if(xmid) return changeodd(x,y,2*k);else return changeodd(x,y,2*k1);
}
int main()
{build(1,8,1);change(1,10,1);changeodd(1,10,1);coutask(1,1)endl;coutask(7,1)endl;
} 单点查询 模板 没有区间修改下的区间查询 和单点查询 。 #includebits/stdc.husing namespace std;const int maxn1e5;struct node{ int l,r,w;}tree[4*maxn1];void build(int l,int r,int k){ tree[k].ll; tree[k].rr; if(lr) { cintree[k].w; /*coutl--tree[k].wendl;*/ return ; } int mid(lr)/2; build(l,mid,2*k); build(mid1,r,2*k1); tree[k].wtree[2*k].wtree[2*k1].w;}int ask(int x,int k)// dian dian cha xun;{ if(tree[k].ltree[k].r) {return tree[k].w; } int mid(tree[k].ltree[k].r)/2; if(xmid) return ask(x,2*k); else return ask(x,2*k1); }void change(int x,int y,int k)// 将节点x修改为y{ if(tree[k].ltree[k].r){ tree[k].wy; return; } int mid(tree[k].ltree[k].r)/2; if(xmid) change(x,y,2*k); else change(x,y,2*k1); tree[k].wtree[2*k].wtree[2*k1].w;}void changeodd(int x,int y,int k)// 将节点 x 上加y{ if(tree[k].ltree[k].r){ tree[k].wy; return; } int mid(tree[k].ltree[k].r)/2; //cout tree[k].l tree[k].rendl; coutmidendl; if(xmid) changeodd(x,y,2*k); else changeodd(x,y,2*k1); tree[k].wtree[2*k].wtree[2*k1].w;}int query(int x,int y,int k) // 区间查询{ int num0; if(tree[k].lx tree[k].ry) { numtree[k].w; ; return num; } int mid(tree[k].ltree[k].r)/2; if(xmid1) numquery(x,y,2*k1); else if(ymid) numquery(x,y,2*k); else numquery(x,mid,2*k)query(mid1,y,2*k1); return num;}int main() { build(1,8,1); for(int i1;i8;i) {coutask(1,1) ; } coutendl; coutquery(1,7,1)endl;;} 区间修改(lazy标记) #includebits/stdc.h#define int long long using namespace std;const int maxn1e510;struct NODE{ int l,r,w,f; // f 为lazy标记}tree[4*maxn10];void build(int p,int q,int k){ tree[k].lp; tree[k].rq; if(tree[k].ltree[k].r) { cintree[k].w;/* couttree[k].wendl;*/ return ; } int mid( tree[k].ltree[k].r )/2; build(p,mid,2*k); build(mid1,q,2*k1); tree[k].wtree[2*k].wtree[2*k1].w;}void down(int k) // (lazy 标记) (××××) (important){ tree[2*k].ftree[k].f; tree[2*k1].ftree[k].f; tree[k*2].wtree[k].f*(tree[k*2].r-tree[k*2].l1); tree[k*21].wtree[k].f*(tree[k*21].r-tree[k*21].l1); tree[k].f0;}void change_interval(int a,int b,int x,int k) // 区间修改 区间加值{ if(tree[k].la tree[k].rb ) { tree[k].w(tree[k].r-tree[k].l1)*x; tree[k].fx; return; } if(tree[k].f) down(k); int mid(tree[k].ltree[k].r)/2; if(bmid) change_interval(a,b,x,2*k); else if(amid1) change_interval(a,b,x,2*k1); else change_interval(a,mid,x,2*k),change_interval(mid1,b,x,2*k1); tree[k].wtree[k*2].wtree[k*21].w;}void change_point(int x,int k){ if(tree[k].ltree[k].r) { tree[k].wx; return; } if(tree[k].f) down(k); int mid(tree[k].ltree[k].r)/2; if(xmid) change_point(x,2*k); else change_point(x,2*k1); tree[k].wtree[k*2].wtree[k*21].w;}int ask_interval(int a,int b,int k) // 区间查询{ int num0; if(tree[k].latree[k].rb) { numtree[k].w; return num; } if(tree[k].f) down(k); int mid( tree[k].ltree[k].r)/2; if(bmid) numask_interval(a,b,2*k); else if(amid1) numask_interval(a,b,2*k1); else numask_interval(a,mid,2*k)ask_interval(mid1,b,2*k1); return num;}int ask_point(int x,int k) // 点查询{ int num0; if(tree[k].ltree[k].r) {return tree[k].w; } if(tree[k].f) down(k); int mid(tree[k].ltree[k].r)/2; if(xmid) ask_point(x,2*k); if(xmid1) ask_point(x,2*k1);}int32_t main(){} 转载于:https://www.cnblogs.com/Andromeda-Galaxy/p/9715315.html