树状数组求区间和 和 单点更新
题目描述
如题,已知一个数列,你需要进行下面两种操作:
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
树状数组求区间和 和 单点更新相关推荐
- 树状数组求区间和模板 区间可修改 参考题目:牛客小白月赛 I 区间
从前有个东西叫树状数组,它可以轻易实现一些简单的序列操作,比如单点修改,区间求和;区间修改,单点求值等. 但是我们经常需要更高级的操作,比如区间修改区间查询.这时候树状数组就不起作用了,只能选择写一个 ...
- 分块的单点修改查询区间和_树状数组的区间修改与单点查询与区间查询
如何将普通树状数组升级 普通的单点修改单点查询就不讲了,从区间修改和单点查询讲起. 原来的值存在a[]里面,多建立个数组c1[],注意:c1[i]=a[i]-a[i-1]. 那么求a[i]的值的时候a ...
- 树状数组求区间和(区间均值)
1658: O__O "- 就是那道中文题 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Descri ...
- [Split The Tree][dfs序+树状数组求区间数的种数]
Split The Tree 时间限制: 1 Sec 内存限制: 128 MB 提交: 46 解决: 11 [提交] [状态] [讨论版] [命题人:admin] 题目描述 You are giv ...
- 【BZOJ】1012: [JSOI2008]最大数maxnumber 树状数组求区间最值
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1012 题意:维护一个数列,开始时没有数值,之后会有两种操作, Q L :查询数列末 ...
- ZOJ - 4117 BaoBao Loves Reading(树状数组求区间内不同数的个数+思维)
题目链接:点击查看 题目大意:给出一个长度为 n 的序列,其意义为第 i 秒需要看第 a[ i ] 种书,书架上可以供应无限种书,但是书桌有容量,当书桌上的容量达到上限后,如果还想从书架上拿新书来看, ...
- hdu2852(2009多校第四场) 树状数组求区间第k大的数 两种方法
二分查找n*logn*logn 比较容易理解 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm& ...
- hdu1754(树状数组求最值问题)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 树状数组之区间修改单点查询
树状数组的区间修改单点查询 树状数组其实本质还单点修改区间查询,但是我们怎么延伸到这个呢,我们建立一个差分数组, 比如: a[10]={4, 6, 7, 5, 1, 6, ...
最新文章
- 织梦mysql占用资源_解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记
- Tomcat虚拟目录配置
- Django之BBS博客项目
- 例子 客户端_服务端也是可以主动向客户端推送数据的--WebSocket
- 18-chown命令
- 第三次握手为什么没有序列号_图解TCP三次握手与四次分手
- PCS7串级PID如何连线控制汽包水位三冲量
- 科技文献检索(九)——检索步骤和策略
- 自定义加密cookie加盐密码
- 服务器没有网卡驱动怎么看网卡型号,[怎么看网卡设备]怎么查看网卡驱动
- Linux系统管理----centos7系统进程管理
- C# 高并发场景下 共享内存 Actor并发模型到底哪个快?
- python django(1170, BLOB/TEXT column 'name' used in key specification without a key length)
- 从数据分析看王祖贤的电影人生
- openEuler 的安装及内核编译
- C语言fseek、ftell和rewind函数详解
- ESXi 6.7.0含RTL8168驱动安装包(亲测可用)
- 腾讯云.xb 数据库备份恢复
- 诺基亚宣布将在芬兰裁员280人 低于此前计划裁员数
- kotlin 读取json文件_Kotlin数据类及json解析
热门文章
- 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
- 再次遇到golang乱码问题,用simplifiedchinese解决
- Eclipse启动Tomcat,45S超时问题解决
- 【推荐实践】模型化召回在陌陌社交推荐的探索和应用.pdf(附下载链接)
- 【白皮书分享】2021年B2B内容营销白皮书.pdf(附下载链接)
- tmux鼠标操作配置
- 阿里小蜜多模态知识图谱的构建及应用
- mysql修改表结构 删除字段_mysql更改表结构:添加、删除、修改字段、调整字段顺序...
- 漫谈广告竞价模式(四)
- 《Deep Learning》笔记