树状数组模板1——单点修改区间查询
树状数组的模板,修改单点的值,查询某个区间
1 #include<cstdio> 2 #include<cctype> 3 using namespace std; 4 5 int c[500010],n,m; 6 7 int read() 8 { 9 int x=0,f=1; 10 char c=getchar(); 11 while (!isdigit(c)) 12 f=c=='-'?-1:1,c=getchar(); 13 while (isdigit(c)) 14 x=(x<<1)+(x<<3)+(c^48),c=getchar(); 15 return x*f; 16 } 17 18 int lowbit(int x) 19 { 20 return x&-x; 21 } 22 23 int query(int x) 24 { 25 int ans=0; 26 for (;x;x-=lowbit(x)) 27 ans+=c[x]; 28 return ans; 29 } 30 31 int update(int x,int val) 32 { 33 for (;x<=n;x+=lowbit(x)) 34 c[x]+=val; 35 } 36 37 int main() 38 { 39 int i,j,t; 40 n=read(),m=read(); 41 for (i=1;i<=n;i++) 42 { 43 j=read(); 44 update(i,j); 45 } 46 while (m--) 47 { 48 t=read(); 49 i=read(); 50 j=read(); 51 if (t==1) 52 update(i,j); 53 else 54 printf("%d\n",query(j)-query(i-1)); 55 } 56 return 0; 57 }
转载于:https://www.cnblogs.com/Ronald-MOK1426/p/8848825.html
树状数组模板1——单点修改区间查询相关推荐
- P3374 【模板】树状数组 1( 单点修改 + 区间查询 )
题目链接:点击进入 题目 思路深入学习 树状数组实现-> 单点修改 + 区间查询 c [ i ] = a ( i - 2 ^ k + 1 ) + - + a [ i ] ( 设节点编号为 i , ...
- [P3374 【模板】树状数组 1](单点修改,区间查询)
*P3374 [模板]树状数组 1* 第一道线段树的题,很好的板子题,中文体面就不过多解释了. 直接上代码(注释很详细了,前提学过线段树) #include<bits/stdc++.h> ...
- 树状数组的建树 单点修改 单点查询 区间修改 区间查询
单点修改 单点查询 用普通数组就能写出来 单点修改 区间查询 用线段树 树状数组: 区间修改 区间查询 用线段树 树状数组: 区间修改 单点查询 用线段树 树状数组: 建 ...
- 二维树状数组模板(区间修改+区间查询)
二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...
- 最长上升子序列三种模板(n^2模板,二分模板,树状数组模板)
最长上升子序列(LIS)是动态规划的入门.总结下来,经常用的模板一共有三种,分别为n^2模板,二分模板,树状数组模板. n^2模板代码如下: //n^2算法,本质就是dp,采用二重循环的方式.对于数据 ...
- P3368 【模板】树状数组 2(区间修改单点查询)
这是树状数组的基础操作,和差分结合在一起,其实这种操作我更习惯于线段树的写法.不过树状数组代码短,执行效率高,值得记录一下. #include<bits/stdc++.h> #define ...
- hdu3966 树链剖分点权模板+线段树区间更新/树状数组区间更新单点查询
点权树的模板题,另外发现树状数组也是可以区间更新的.. 注意在对链进行操作时方向不要搞错 线段树版本 #include<bits/stdc++.h> using namespace std ...
- HDU1166 敌兵布阵(树状数组模板题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- java 树状数组模板源码
树状数组是一个查询和修改复杂度都为log(n)的数据结构,将树状数组看成一种数据结构,对于一个数组,如果有多次操作,每次的操作有两种:1.修改数组中某一元素的值,2.求和,求数组元素a[1]+a[2] ...
最新文章
- python学习干货教程(10):列表
- linux 僵尸进程 defunct
- Nginx、LVS及HAProxy负载均衡软件的优缺点详解
- Python模块EasyGui专题学习
- Request_获取请求头数据
- 39个转录组分析工具,120种组合评估
- 文本获取和搜索引擎中的反馈模型
- php-有时候你会疑惑的小问题
- 多个项目共用同一个redis_浅谈Redis分布式锁(上)
- centos服务器之间copy文件夹命令,Centos下如何拷贝整个目录命令?Centos下拷贝目录命令的方法...
- gis 数据框裁剪_【更新84篇】地理数据科学技术文章合集,欢迎大家点赞、在看、转发三连!...
- typedef struct LNode *p和typedef struct LNode笔记
- 微信小程序学习资料——转载
- 传智播客风清扬视频-------IO简述之字符流常用实现类
- oracle建索引时报ora00955 名称已由现有对象使用,“ORA-00955: 名称已由现有对象使用” 这个错误是怎么回事?...
- Google I/O 2021:在重要时刻提供帮助
- 千兆路由器怎么设置网速最快_tp无线路由器怎么设置网速最快
- MathType批量修改公式字体和大小
- 将Maven仓库地址修改为阿里云的仓库地址
- Tensorflow slim库