树状数组的模板,修改单点的值,查询某个区间

 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——单点修改区间查询相关推荐

  1. P3374 【模板】树状数组 1( 单点修改 + 区间查询 )

    题目链接:点击进入 题目 思路深入学习 树状数组实现-> 单点修改 + 区间查询 c [ i ] = a ( i - 2 ^ k + 1 ) + - + a [ i ] ( 设节点编号为 i , ...

  2. [P3374 【模板】树状数组 1](单点修改,区间查询)

    *P3374 [模板]树状数组 1* 第一道线段树的题,很好的板子题,中文体面就不过多解释了. 直接上代码(注释很详细了,前提学过线段树) #include<bits/stdc++.h> ...

  3. 树状数组的建树 单点修改 单点查询 区间修改 区间查询

    单点修改  单点查询   用普通数组就能写出来 单点修改  区间查询   用线段树  树状数组: 区间修改  区间查询   用线段树  树状数组: 区间修改  单点查询   用线段树  树状数组: 建 ...

  4. 二维树状数组模板(区间修改+区间查询)

    二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...

  5. 最长上升子序列三种模板(n^2模板,二分模板,树状数组模板)

    最长上升子序列(LIS)是动态规划的入门.总结下来,经常用的模板一共有三种,分别为n^2模板,二分模板,树状数组模板. n^2模板代码如下: //n^2算法,本质就是dp,采用二重循环的方式.对于数据 ...

  6. P3368 【模板】树状数组 2(区间修改单点查询)

    这是树状数组的基础操作,和差分结合在一起,其实这种操作我更习惯于线段树的写法.不过树状数组代码短,执行效率高,值得记录一下. #include<bits/stdc++.h> #define ...

  7. hdu3966 树链剖分点权模板+线段树区间更新/树状数组区间更新单点查询

    点权树的模板题,另外发现树状数组也是可以区间更新的.. 注意在对链进行操作时方向不要搞错 线段树版本 #include<bits/stdc++.h> using namespace std ...

  8. HDU1166 敌兵布阵(树状数组模板题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  9. java 树状数组模板源码

    树状数组是一个查询和修改复杂度都为log(n)的数据结构,将树状数组看成一种数据结构,对于一个数组,如果有多次操作,每次的操作有两种:1.修改数组中某一元素的值,2.求和,求数组元素a[1]+a[2] ...

最新文章

  1. python学习干货教程(10):列表
  2. linux 僵尸进程 defunct
  3. Nginx、LVS及HAProxy负载均衡软件的优缺点详解
  4. Python模块EasyGui专题学习
  5. Request_获取请求头数据
  6. 39个转录组分析工具,120种组合评估
  7. 文本获取和搜索引擎中的反馈模型
  8. php-有时候你会疑惑的小问题
  9. 多个项目共用同一个redis_浅谈Redis分布式锁(上)
  10. centos服务器之间copy文件夹命令,Centos下如何拷贝整个目录命令?Centos下拷贝目录命令的方法...
  11. gis 数据框裁剪_【更新84篇】地理数据科学技术文章合集,欢迎大家点赞、在看、转发三连!...
  12. typedef struct LNode *p和typedef struct LNode笔记
  13. 微信小程序学习资料——转载
  14. 传智播客风清扬视频-------IO简述之字符流常用实现类
  15. oracle建索引时报ora00955 名称已由现有对象使用,“ORA-00955: 名称已由现有对象使用” 这个错误是怎么回事?...
  16. Google I/O 2021:在重要时刻提供帮助
  17. 千兆路由器怎么设置网速最快_tp无线路由器怎么设置网速最快
  18. MathType批量修改公式字体和大小
  19. 将Maven仓库地址修改为阿里云的仓库地址
  20. Tensorflow slim库

热门文章

  1. 鼠标滚轮控制panel滚动条
  2. WebBrowser控件参数解释
  3. android fps 垂直同步,浅谈Android流畅度
  4. php 返回查询结果某个字段
  5. 20181104_C#线程之Thread_ThreadPool_使用Thread实现回到和带参数的回调
  6. 原价买了二手机,我是如何做到的?
  7. A 01 如何理解会计中的借和贷
  8. HDU 1426 Sudoku Killer【DFS 数独】
  9. 深度增强学习方向论文整理
  10. caffe读书笔记1 CIFAR-10在caffe上进行训练与学习