博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线段树 区间更新 区间求和 板子
阅读量:5360 次
发布时间:2019-06-15

本文共 1781 字,大约阅读时间需要 5 分钟。

给出N个数,Q次操作。有两种操作类型

1. 在区间 [L,R] 加上一个整数v

2. 区间[L,R]查询。

区间查询 区间更新

#include
#include
using namespace std;#define ls rt<<1#define rs rt<<1|1typedef long long ll;const int N = 1e5+10;int n,q,num[N];ll tr[N<<2],lz[N<<2];void down(int rt,int l,int r) { if(lz[rt]) { int m = (l+r)/2; lz[ls] += lz[rt]; lz[rs] += lz[rt]; tr[ls] += 1LL*(m-l+1)*lz[rt]; tr[rs] += 1LL*(r-m)*lz[rt]; lz[rt] = 0; }}void build(int rt,int l,int r) { if(l == r){ tr[rt]=num[l]; return ; } int m = (l+r)/2; build(ls,l,m); build(rs,m+1,r); tr[rt] = tr[ls] + tr[rs];}void update(int rt,int l,int r,int L,int R,int x) { if(L <= l && r <= R) { lz[rt] += x; tr[rt] += 1LL*(r-l+1)*x; return ; } down(rt,l,r); int m=(l+r)/2; if(m >= L) update(ls,l,m,L,R,x); if(m < R) update(rs,m+1,r,L,R,x); tr[rt] = tr[ls] + tr[rs];}ll query(int rt,int l,int r,int L,int R) { if(L <= l && r <= R) { return tr[rt]; } down(rt,l,r); ll res = 0; int m=(l+r)/2; if(m >= L) res += query(ls,l,m,L,R); if(m < R) res += query(rs,m+1,r,L,R); return res;}int main () { //freopen("in.txt","r",stdin); while (scanf("%d %d",&n,&q)==2) { for(int i=1;i<=n;i++) { scanf("%d",&num[i]); } memset(lz,0,sizeof(lz)); build(1,1,n); while (q--) { char op[3]; int L,R; scanf("%s %d %d",op,&L,&R); if(op[0]=='Q') { printf("%lld\n",query(1,1,n,L,R)); }else { int x; scanf("%d",&x); update(1,1,n,L,R,x); } } } return 0;}

 

转载于:https://www.cnblogs.com/Draymonder/p/9478127.html

你可能感兴趣的文章
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>