题目描述

如题,已知一个数列,你需要进行下面两种操作:

1.将某一个数加上x

2.求出某区间每一个数的和

输入输出格式

输入格式:

第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。

第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。

接下来M行每行包含3个整数,表示一个操作,具体如下:

操作1: 格式:1 x k 含义:将第x个数加上k

操作2: 格式:2 x y 含义:输出区间[x,y]内每个数的和

输出格式:

输出包含若干行整数,即为所有操作2的结果。

输入输出样例

输入样例:

5 5
1 5 4 2 3
1 1 3
2 2 5
1 3 -1
1 4 2
2 1 4

输出样例:

14
16

说明

时空限制:1000ms,128M

数据规模:

对于30%的数据:N<=8,M<=10

对于70%的数据:N<=10000,M<=10000

对于100%的数据:N<=500000,M<=500000

#include<iostream>
#include<string.h>
using namespace std;
const int maxn=500000+5;
const int maxm=500000+5;
int c[maxn];//用于存储对应下标所存储的数据和
int lowbit(int x)
{return x&(-x);
}
void updata(int x,int y)//下标为x的c[x] 加上y
{while(x<maxn){c[x]+=y;x+=lowbit(x);}
}
void query(int x ,int y)
{int sum1=0,sum2=0;while(x>0){sum1+=c[x];x-=lowbit(x);}while(y>0){sum2+=c[y];y-=lowbit(y);}cout<<sum2-sum1<<endl;
}
int main()
{memset(c,0,sizeof(c));int n,m,v;int t,x,y;cin>>n>>m;for(int i=1;i<=n;i++){cin>>v;updata(i,v);}for(int i=1;i<=m;i++){cin>>t>>x>>y;if(t==1){updata(x,y);}else{query(x-1,y);}}return 0;
}

转载于:https://www.cnblogs.com/caijiaming/p/10291782.html

树状数组求区间和 和 单点更新相关推荐

  1. 树状数组求区间和模板 区间可修改 参考题目:牛客小白月赛 I 区间

    从前有个东西叫树状数组,它可以轻易实现一些简单的序列操作,比如单点修改,区间求和;区间修改,单点求值等. 但是我们经常需要更高级的操作,比如区间修改区间查询.这时候树状数组就不起作用了,只能选择写一个 ...

  2. 分块的单点修改查询区间和_树状数组的区间修改与单点查询与区间查询

    如何将普通树状数组升级 普通的单点修改单点查询就不讲了,从区间修改和单点查询讲起. 原来的值存在a[]里面,多建立个数组c1[],注意:c1[i]=a[i]-a[i-1]. 那么求a[i]的值的时候a ...

  3. 树状数组求区间和(区间均值)

    1658: O__O "- 就是那道中文题 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Descri ...

  4. [Split The Tree][dfs序+树状数组求区间数的种数]

    Split The Tree 时间限制: 1 Sec  内存限制: 128 MB 提交: 46  解决: 11 [提交] [状态] [讨论版] [命题人:admin] 题目描述 You are giv ...

  5. 【BZOJ】1012: [JSOI2008]最大数maxnumber 树状数组求区间最值

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1012 题意:维护一个数列,开始时没有数值,之后会有两种操作, Q L :查询数列末 ...

  6. ZOJ - 4117 BaoBao Loves Reading(树状数组求区间内不同数的个数+思维)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,其意义为第 i 秒需要看第 a[ i ] 种书,书架上可以供应无限种书,但是书桌有容量,当书桌上的容量达到上限后,如果还想从书架上拿新书来看, ...

  7. hdu2852(2009多校第四场) 树状数组求区间第k大的数 两种方法

    二分查找n*logn*logn 比较容易理解 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm& ...

  8. hdu1754(树状数组求最值问题)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 树状数组之区间修改单点查询

    树状数组的区间修改单点查询 树状数组其实本质还单点修改区间查询,但是我们怎么延伸到这个呢,我们建立一个差分数组, 比如:                a[10]={4, 6, 7, 5, 1, 6, ...

最新文章

  1. 织梦mysql占用资源_解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记
  2. Tomcat虚拟目录配置
  3. Django之BBS博客项目
  4. 例子 客户端_服务端也是可以主动向客户端推送数据的--WebSocket
  5. 18-chown命令
  6. 第三次握手为什么没有序列号_图解TCP三次握手与四次分手
  7. PCS7串级PID如何连线控制汽包水位三冲量
  8. 科技文献检索(九)——检索步骤和策略
  9. 自定义加密cookie加盐密码
  10. 服务器没有网卡驱动怎么看网卡型号,[怎么看网卡设备]怎么查看网卡驱动
  11. Linux系统管理----centos7系统进程管理
  12. C# 高并发场景下 共享内存 Actor并发模型到底哪个快?
  13. python django(1170, BLOB/TEXT column 'name' used in key specification without a key length)
  14. 从数据分析看王祖贤的电影人生
  15. openEuler 的安装及内核编译
  16. C语言fseek、ftell和rewind函数详解
  17. ESXi 6.7.0含RTL8168驱动安装包(亲测可用)
  18. 腾讯云.xb 数据库备份恢复
  19. 诺基亚宣布将在芬兰裁员280人 低于此前计划裁员数
  20. kotlin 读取json文件_Kotlin数据类及json解析

热门文章

  1. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
  2. 再次遇到golang乱码问题,用simplifiedchinese解决
  3. Eclipse启动Tomcat,45S超时问题解决
  4. 【推荐实践】模型化召回在陌陌社交推荐的探索和应用.pdf(附下载链接)
  5. 【白皮书分享】2021年B2B内容营销白皮书.pdf(附下载链接)
  6. tmux鼠标操作配置
  7. 阿里小蜜多模态知识图谱的构建及应用
  8. mysql修改表结构 删除字段_mysql更改表结构:添加、删除、修改字段、调整字段顺序...
  9. 漫谈广告竞价模式(四)
  10. 《Deep Learning》笔记