下有彩蛋(from https://www.cnblogs.com/wuwangchuxin0924/p/5921130.html)
树状数组的blog写的最好的是这位//https://www.cnblogs.com/wuwangchuxin0924/p/5921130.html//声明一下跟我没有半毛钱关系,我是一个热爱珂学的好孩子
我要说的主要是怎么去学习树状数组,刚开始我也无从下手,但是我想到了一个方法,虽然我不知道怎么实现,但我知道代码的意思和实现的原理,所以我对照他(她)的代码在看着他(她)的图去思考,就懂了。
图就是这张

非常的清晰只要跟着代码走就好了,但我不喜欢他(她)的代码,所以给你们我的代码作为一个参考,你们也可以看他(她)的。
 #include<bits/stdc++.h>
using namespace std;
int n,m,a[],c[];
int lowbit(int x){
return x&(-x);//这个是求末尾零的个数的,因为只要末尾有零的都是2^n次方(n自己代)
}
void add_tree(int x,int y){//和线段树不一样这是一个一个数处理的
while (x<=n){
c[x]+=y;
if (lowbit(x)==) return;//如果后面没有零了,有可能死循环
x+=lowbit(x);//这个就是我说的要对着图看的,因为前面的数不可能再加给更前面的区间所以只要考虑给后面的加
}
}
int sum(int x){//求出1到x区间的和,就是add_tree的逆过程
int ans=;
while (x>){
ans+=c[x];
if (lowbit(x)==) return ans;
x-=lowbit(x);
}
return ans;
}
int main(){
cin>>n>>m;
for (int i=;i<=n;i++) cin>>a[i];
for (int i=;i<=n;i++) add_tree(i,a[i]);
for (int i=;i<=m;i++){
int a,b,c;
cin>>a>>b>>c;
if (a==) add_tree(b,c);
else cout<<sum(c)-sum(b-)<<endl;//因为b这个点也要加所以b-1
}
}
/*
                   _ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I have a dream!A AC deram!!
orz orz orz orz orz orz orz orz orz orz orz
orz orz orz orz orz orz orz orz orz orz orz
orz orz orz orz orz orz orz orz orz orz orz */
这个好

致所以OIer(from https://www.cnblogs.com/wuwangchuxin0924/p/5921130.html)(从不侵权的小宝宝
												

洛谷P3374树状数组1的更多相关文章

  1. 洛谷P3368 树状数组2 树状数组+差分

    正解:树状数组+差分 解题报告: 戳我! 不得不说灵巧真滴是越来越弱了...连模板题都要放上来了QAQ 因为今天考试的T3正解要用到树状数组这才惊觉树状数组掌握得太太太太差了...之前一直靠线段树续着 ...

  2. 洛谷 P3368 树状数组 题解

    题面 本题随便看两眼就知道该题满足了优美的查分性质: 对于在区间[x,y]内操作时,应该将查分数组的第x项和第y+1项进行相反操作: 询问答案时,问第i个数的值就是查分数组的前i项和: 暴力+玄学卡常 ...

  3. 【luogu P3374 树状数组1】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3374 留个坑,以后补上BIT的讲解,先留下板子复习用 #include<iostream> #i ...

  4. P3368 【模板】树状数组 2

    原题链接  https://www.luogu.org/problemnew/show/P3368 这个题和洛谷P3374树状数组1 有些不同,在普通的树状数组上运用了差分的知识.(由于P3374涉及 ...

  5. POJ2155/LNSYOJ113 Matrix【二维树状数组+差分】【做题报告】

    这道题是一个二维树状数组,思路十分神奇,其实还是挺水的 题目描述 给定一个N∗NN∗N的矩阵AA,其中矩阵中的元素只有0或者1,其中A[i,j]A[i,j]表示矩阵的第i行和第j列(1≤i,j≤N)( ...

  6. 洛谷 P3374 【模板】树状数组 1(单点加,区间和)

    题目链接 https://www.luogu.org/problemnew/show/P3374 树状数组 树状数组最基本的就是求区间和. 维护: 空间复杂度:O(n) 时间复杂度(区间和,单点修改) ...

  7. 洛谷P3374 【模板】树状数组 1

    P3374 [模板]树状数组 1 140通过 232提交 题目提供者HansBug 标签 难度普及/提高- 提交  讨论  题解 最新讨论 题目描述有误 题目描述 如题,已知一个数列,你需要进行下面两 ...

  8. 洛谷 P3374 【模板】树状数组 1 题解

    P3374 [模板]树状数组 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入格式 第一行包含两个整数N.M,分别表示该数列数字的个数 ...

  9. 【洛谷 p3374】模板-树状数组 1(数据结构)

    题目:已知一个数列,你需要进行下面两种操作:1.将某一个数加上x:2.求出某区间每一个数的和. 解法:树状数组求前缀和. #include<cstdio> #include<cstd ...

随机推荐

  1. mail邮箱

    1. 创建163邮箱(其他邮箱同理) 2.设置授权码 3.开启服务 4.vim /etc/mail.rc 5. 给你的qq邮箱设置163账号的白名 6. 发送md5结果到qq 7.无邮件正文 mail ...

  2. Docker从入门到实战(四)

    Docker基础 一:Docker基本操作 一般情况安装Docker之后系统会自动创建一个Docker的用户组,如果没有创建可以手动创建groupadd docker把当前非root用户加入group ...

  3. LeetCode 046 Permutations 全排列

    Given a collection of distinct numbers, return all possible permutations.For example,[1,2,3] have th ...

  4. Unity (反向动力学)IK动画

  5. Java面向对象_对象一一对应关系和this关键字

    一.打个比方,一个人有一个身份证号,一个身份证号对应一个人.一个英雄对应一把武器,一把武器对应一个英雄.生活中很多对象都存在一一对应关系,那么一一对应关系在代码中是如何实现的呢?举个例子,英雄和武器一 ...

  6. 3 - EventLoop和线程模型-事件循环

    a). EventLoopGroup为每个新创建的channel分配一个EventLoop,多个channel对应一个EventLoop. b). 一个EventLoop由一个不变的thread驱动, ...

  7. CXF 发布rest服务

    1.1      什么是rest服务 REST 是一种软件架构模式,只是一种风格,rest服务采用HTTP 做传输协议,REST 对于HTTP 的利用实现精确的资源定位. Rest要求对资源定位更加准 ...

  8. 在MFC对话框中快速集成三维控件

    在MFC的对话框中可以方便的集成AnyCAD三维控件(c++版本),遵循一下几步: 1.在对话框资源中增加一个Static控件,ID为IDC_STATIC_3D,并且把它的Notify属性设置为Tru ...

  9. Struts2 源码分析-----Hello world

    今天第一天学习struts2,没学过怎么办,那当然是helloworld.感觉嘛,学习的基本流程都差不多,就是helloworld,开发环境,然后就是逐个按照知识点打demo,打着打着你就会发现str ...

  10. springboot 学习笔记(五)

    (五)springboot整合thymeleaf模板,实现简单的登陆 1.修改上一节笔记中的user表,新增一个password字段,同时要求username为UNIQUE,以实现登陆校验,表结构如下 ...