【洛谷】P3372线段树1 线段树模板
来源:互联网 发布:写作的软件 编辑:程序博客网 时间:2024/06/01 10:42
#include <cstdio>#define C (c=getchar())#define LL long longusing namespace std;LL lz[262845];LL tr[262845];LL a[100005];LL m,n,x,y,k,w;inline void read(LL &n){LL f=1;char c;n=0;C;while (c<'0'||c>'9') c=='-'?f=-1,C:C;while (c>='0'&&c<='9') n=(n<<3)+(n<<1)+c-48,C;n*=f;return;}void tag_down(LL q,LL L,LL R){if (lz[q]!=0){LL md=(L+R)/2;lz[2*q]+=lz[q];lz[2*q+1]+=lz[q];tr[2*q]+=(md-L+1)*lz[q];tr[2*q+1]+=(R-md)*lz[q];lz[q]=0;}return;}void bt(LL q,LL l,LL r){if (l==r){tr[q]=a[l];return;}bt(2*q,l,(l+r)/2);bt(2*q+1,(l+r)/2+1,r);tr[q]=tr[2*q]+tr[2*q+1];return;}void add(LL q,LL l,LL r,LL L,LL R){if (l==L&&r==R){if (L!=R) lz[q]+=k;tr[q]+=k*(r-l+1);return;}LL mid=(L+R)/2;if (r<=mid){tr[q]+=(r-l+1)*k;add(2*q,l,r,L,mid);}elseif (l>=mid+1){tr[q]+=(r-l+1)*k;add(2*q+1,l,r,mid+1,R);}else{tr[q]+=(r-l+1)*k;add(2*q,l,mid,L,mid);add(2*q+1,mid+1,r,mid+1,R);}return;}LL find(LL q,LL l,LL r,LL L,LL R){if (l==L&&r==R) return tr[q];LL mid=(L+R)/2;tag_down(q,L,R);if (r<=mid){return find(2*q,l,r,L,mid);}elseif (l>=mid+1){return find(2*q+1,l,r,mid+1,R);}else{return find(2*q,l,mid,L,mid)+find(2*q+1,mid+1,r,mid+1,R);}}int main(void){read(n),read(m);for (register LL i=1;i<=n;++i){read(a[i]);}bt(1,1,n);for (register LL i=1;i<=m;++i){read(w);if (w==1){read(x),read(y),read(k);add(1,x,y,1,n);}elseif (w==2){read(x),read(y);printf("%lld\n",find(1,x,y,1,n));}}return 0;}
阅读全文
0 0
- 洛谷 P3372 线段树模板
- [P3372][模板]线段树1
- 【洛谷P3372】【模板】线段树 1
- 洛谷 P3372【模板】线段树 1
- 洛谷P3372 【模板】线段树 1
- 洛谷 P3372 【模板】线段树 1
- 【洛谷P3372】【模板】线段树1
- 【洛谷】P3372线段树1 线段树模板
- 洛谷P3372线段树模板1(改段求段)
- 洛谷P3372 【模板】线段树 1(lazy)
- 洛谷p3372 线段树模版
- Luogu-P3372 (Lazy_tag 线段树模板)
- 【模板】树状数组 区间修改,区间求和 (模板题:洛谷P3372线段树1)
- 【模板】线段树 区间加,区间求和 (模板题:P3372线段树1)
- 洛谷 P3372 线段树 1(树状数组做法)
- 关于 线段树 下传(AC) 不做标记 下传(T3)模板洛谷p3372
- 【模板】线段树 1
- 线段树模板1
- 35个Java代码性能优化总结
- 2017南宁网络赛M.Frequent Subsets Problem (状态压缩)
- 有时需要把析构函数设置为虚函数虚函数
- Ruby学习笔记(03)_变量
- load jpeg with tensorflow-FIFOQueue '_1_input_producer' is closed and has insufficient elements()
- 【洛谷】P3372线段树1 线段树模板
- 二叉树相关算法
- 深入理解 JavaScript 正则表达式的特性与最佳实践
- IT界最真实的面试实录
- 2.偏头痛杨的rocketmq4.x入门之安装&启动篇
- 数组中出现次数超过一半的数字
- Android组件化开发实践
- Web应用请求平均时间统计
- Java(2-2)