题面:

给定一数列,规定有两种操作,一是修改某个元素,二是求区间的连续和。

Input:

输入数据第一行包含两个正整数n,m(n<=100000,m<=500000),以下是m行,

每行有三个正整数k,a,b(k=0或1, a,b<=n).

k=0时表示将a处数字加上b,k=1时表示询问区间[a,b]内所有数的和。

Output:

对于每个询问输出对应的答案。

Sample Input:

10 20

0 1 10

1 1 4

0 6 6

1 4 10

1 8 9

1 4 9

0 10 2

1 1 8

0 2 10

1 3 9

0 7 8

0 3 10

0 1 1

1 3 8

1 6 9

0 5 5

1 1 8

0 4 2

1 2 8

0 1 1

Sample Output:

10

6

0

6

16

6

24

14

50

41

Solution:

线段树模板题,单点修改,区间询问,tree数组维护和

Code:

#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000001];
struct sgt{
int tree[500001];
void build(int k,int l,int r){
if(l==r){
tree[k]=a[l];
return ;
}
int mid=(l+r)>>1;
build(k<<1,l,mid);build(k<<1|1,mid+1,r);
tree[k]=tree[k<<1]+tree[k<<1|1];
}//建树
void change(int x,int v,int l,int r,int k){
if(l==x&&r==x){
tree[k]+=v;return;
}
int mid=(l+r)>>1;
if(x<=mid)change(x,v,l,mid,k<<1);
else change(x,v,mid+1,r,k<<1|1);
tree[k]=tree[k<<1]+tree[k<<1|1];
}//单点修改
int query(int l,int r,int L,int R,int k){
if(l>R||r<L)return 0;
if(l>=L&&r<=R)return tree[k];
int re=0;
int mid=(l+r)>>1;
re+=query(l,mid,L,R,k<<1);
re+=query(mid+1,r,L,R,k<<1|1);
return re;
}//区间查询
}T;//结构体存线段树
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main(){
n=read();m=read();
T.build(1,1,n);
for(int i=1;i<=m;i++){
int opt,l,r;
opt=read();l=read();r=read();
if(opt==0)T.change(l,r,1,n,1);
if(opt==1)printf("%d\n",T.query(1,n,l,r,1));
}
return 0;
}

最新文章

  1. robotium重签名使用解决办法
  2. iOS-ARC项目使用非ARC文件 MRC项目使用ARC文件
  3. 【POI xls】解析xls遇到的问题
  4. phpcms站---去除域名绑定目录中的HTML
  5. ASP.NET运行机制原理
  6. C# - dynamic 类型
  7. Handlebars 介绍
  8. 动态添加子视图 UIView 的正确方法
  9. IOS QuartzCore核心动画框架
  10. 动态的 css——less
  11. UVA 620 Cellular Structure (dp)
  12. 大约Android PopupWindow有用Spinner控件点击APP Crash案例整理!
  13. Android解析中国天气接口JSon数据,应用于天气查询!
  14. Salesforce知识整理(一)之Lightning Web Component Tools
  15. XP下 无法定位程序输入点WSAPoll于动态链接库ws2_32.dll 的解决办法
  16. Http协议请求头、响应头、响应码
  17. [转][C#]程序的动态编译
  18. Scrum冲刺阶段2
  19. 洗礼灵魂,修炼python(29)--装饰器(1)—&gt;利用经典案例解析装饰器概念
  20. hibernate文档头的不同版本

热门文章

  1. 在Centos7下安装与部署.net core
  2. 创建Springmvc项目时,特殊拦截器失效情况的原因及解决办法
  3. XAF-如何改变列表点击时的默认行为
  4. C++操作符优先级带来的错误
  5. oss上传文件0字节
  6. Firefox开发
  7. JMeter怎样测试WebSocket
  8. 令自己的本地ip可以被外网访问
  9. 《零基础学HTML5+CSS3(全彩版)》读书笔记
  10. Linux系统进程管理