博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3468 A Simple Problem with Integers(线段树成段增减,区间求和)
阅读量:6435 次
发布时间:2019-06-23

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

题意:一个数列,每次操作可以是将某区间数字都加上一个相同的整数,也可以是询问一个区间中所有数字的和。(这里区间指的是数列中连续的若干个数)对每次询问给出结果。

#include 
#include
#include
#include
#include
#include
#include
using namespace std;#define M 100005#define ls node<<1,l,m#define rs node<<1|1,m+1,rint n,m;long long tree1[M<<2],tree2[M<<2];void pushdown(int node,int m){ if(tree1[node]) { tree1[node<<1]+=tree1[node]; tree1[node<<1|1]+=tree1[node]; tree2[node<<1]+=(m-(m>>1))*tree1[node]; tree2[node<<1|1]+=(m>>1)*tree1[node]; tree1[node]=0; }}void buildtree(int node,int l,int r){ tree1[node]=0; if(l==r) { scanf("%lld",&tree2[node]); return ; } int m=(l+r)>>1; buildtree(ls); buildtree(rs); tree2[node]=tree2[node<<1]+tree2[node<<1|1];}void update(int L,int R,int c,int node,int l,int r){ if(L<=l&&r<=R) { tree1[node]+=c; tree2[node]+=c*(r-l+1); return ; } pushdown(node,r-l+1); int m=(l+r)>>1; if(L<=m) update(L,R,c,ls); if(R>m) update(L,R,c,rs); tree2[node]=tree2[node<<1]+tree2[node<<1|1];}long long query(int node,int l,int r,int L,int R){ if(L<=l&&r<=R) { return tree2[node]; } pushdown(node,r-l+1); int m=(l+r)>>1; long long ans=0; if(L<=m) ans+=query(ls,L,R); if(R>m) ans+=query(rs,L,R); return ans;}int main(){ //freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&m)) { buildtree(1,1,n); char s[2]; int a,b,c; while(m--) { scanf("%s",s); if(s[0]=='Q') { scanf("%d%d",&a,&b); printf("%lld\n",query(1,1,n,a,b)); } else { scanf("%d%d%d",&a,&b,&c); update(a,b,c,1,1,n); } } } return 0;}

 

转载于:https://www.cnblogs.com/d-e-v-i-l/p/4746840.html

你可能感兴趣的文章
DPDK 全面分析
查看>>
sudo with no password
查看>>
洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
查看>>
poj3296--Rinse(三分)
查看>>
虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?...
查看>>
最短路径 - 迪杰斯特拉(Dijkstra)算法
查看>>
plsql developer 64位版本
查看>>
上海全球“编程一小时”活动记
查看>>
Win8Metro(C#)数字图像处理--2.33图像非线性变换
查看>>
【翻译】Nginx的反向代理
查看>>
htm、html、shtml网页区别
查看>>
InstallShield Build Error -1014: Cannot rename directory <PATH> to <PATH>\folder.Bak.
查看>>
HTML特殊符号对照表
查看>>
遍历文件夹下的子文件夹的时候,文件夹名字包含逗号或者空格
查看>>
SOD 框架
查看>>
SpringCloud学习笔记:服务注册与发现Eureka(2)
查看>>
input file 文件上传,js控制上传文件的大小和格式
查看>>
Sales Order ORA-04062 FRM-40815 in EBS R12.2.4
查看>>
第17件事 成功要素分析
查看>>
大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStat...
查看>>