Luogu-P3372 (Lazy_tag 线段树模板)
来源:互联网 发布:淘宝店注册公司 编辑:程序博客网 时间:2024/06/06 04:56
题目
- 链接:https://www.luogu.org/problem/show?pid=3372
- 就是个区间修改(都增加某个值),区间查询的简单线段树模板
分析
…
程序中线段树用了个结构体封装了起来,存起来。打网络赛时可以复制下来,依题意稍作修改就能用了。
程序
#include <cstdio>#define INF 100005int n,m,du,k,k1,k2,k3;struct segment_tree{ #define X tr[x] #define lx (x<<1) #define rx ((x<<1)+1) #define L tr[lx] #define R tr[rx] #define Mid (l+r>>1) #define sz(x) (X.r-X.l+1) struct node{long long l,r,s,t1;} tr[4*INF]; long long mer(int x,int y){return tr[x].s+tr[y].s;} void bui(int x,int l,int r){ if (l==r) {X=(node){l,r,(scanf("%d",&du),du),0}; return;} bui(lx,l,Mid); bui(rx,Mid+1,r); X=(node){l,r,mer(lx,rx),0}; } void addtag(int x,int v){ X.s+=v*sz(x); X.t1+=v; } void Down(int x){ if (X.t1!=0){ addtag(lx,X.t1); addtag(rx,X.t1); X.t1=0; } } void add(int x,int l,int r,int v){ if (l<=X.l && X.r<=r){addtag(x,v); return;} Down(x); if (l<=L.r) add(lx,l,r,v); if (R.l<=r) add(rx,l,r,v); X.s=mer(lx,rx); } long long que(int x,int l,int r){ if (l<=X.l && X.r<=r) return X.s; Down(x); long long ret=0; if (l<=L.r) ret+=que(lx,l,r); if (R.l<=r) ret+=que(rx,l,r); return ret; }}tree;int main(){ scanf("%d%d",&n,&m); tree.bui(1,1,n); while (m-- && scanf("%d",&k)){ if (k==1){ scanf("%d%d%d",&k1,&k2,&k3); tree.add(1,k1,k2,k3); } if (k==2){ scanf("%d%d",&k1,&k2); printf("%lld\n",tree.que(1,k1,k2)); } } return 0;}
1 0
- Luogu-P3372 (Lazy_tag 线段树模板)
- 洛谷 P3372 线段树模板
- [P3372][模板]线段树1
- 【洛谷P3372】【模板】线段树 1
- 洛谷 P3372【模板】线段树 1
- 洛谷P3372 【模板】线段树 1
- 洛谷 P3372 【模板】线段树 1
- 【洛谷P3372】【模板】线段树1
- 【洛谷】P3372线段树1 线段树模板
- 线段树的标记lazy_tag
- 洛谷P3372线段树模板1(改段求段)
- 洛谷P3372 【模板】线段树 1(lazy)
- 【模板】线段树 区间加,区间求和 (模板题:P3372线段树1)
- 洛谷p3372 线段树模版
- poj 2991 Crane 线段树lazy_tag
- 【模板】树状数组 区间修改,区间求和 (模板题:洛谷P3372线段树1)
- 关于 线段树 下传(AC) 不做标记 下传(T3)模板洛谷p3372
- [luogu]1531 线段树
- 蓝桥杯2017【模拟赛3】排列序数(康托展开式)
- 救援
- 今日编程所思
- HDU
- 归并排序
- Luogu-P3372 (Lazy_tag 线段树模板)
- poj The Unique MST 次小生成树(入门级)
- UVA10325:The Lottery (容斥)
- light oj 1245 1245
- 阿里的笔试,正则表达式
- 简单Web项目 struts + hibernate
- 树的遍历专讲(知二求一)
- LeetCoder 6. ZigZag Conversion
- 算法训练 一元三次方程求解 二分