2018年5月31号(树状数组)

  今天,老师讲了树状数组,本蒟蒻有点懵懵懂懂,但是基本模板我还是记到的;

  先是讲下原理:

  今晚学了树状数组…所以呢我来总结一下自己对它的理解… 
   
  这图是在网上随便找找的… 
  由图可以得出: 
  c1=a1; 
  c2=c2+c1=a1+a2; 
  c3=a3; 
  c4=c4+c3+c2=a1+a2+a3+a4; 
  c5=a5; 
  c6=c6+c5=a5+a6; 
  c7=a7; 
  c8=c8+c7+c6+c4=a1+a2+a3+a4+a5+a6+a7+a8;

  前k项和: 
  s1=c1=a1; 
  s2=c2+c1=a1+a2; 
  s3=c3=a3; 
  s4=c4+c3+c2=a1+a2+a3+a4; 
  s5=a5; 
  s6=c6=c6+c5=a5+a6; 
  s7=c7=a7; 
  s8=c8+c7+c6+c4=a1+a2+a3+a4+a5+a6+a7+a8;

  上面那张图你可能会看不懂,接下来是一张好图:

  

  那些数字的边上上是二进制,我们就是从他的二进制考虑;

  1.lowbit

1 long long er(long long k)
2 {
3     return k&-k;
4 }

  2.更新

1 void add(long long x,long long y)
2 {
3     while(x<=n)
4     {
5         jie[x]+=y;
6         x+=er(x);
7     }
8 }

  3.求值

 1 long long qiu(long long x)
 2 {
 3     long long tot=0;
 4     while(x!=0)
 5     {
 6         tot+=jie[x];
 7         x-=er(x);
 8     }
 9     return tot;
10 }

over

原文地址:https://www.cnblogs.com/zssmg/p/9119354.html

时间: 2024-10-09 02:42:50

2018年5月31号(树状数组)的相关文章

51Nod 1272最大距离 (树状数组维护前缀最小值)

题目链接 最大距离 其实主流解法应该是单调栈--我用了树状数组. 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 #define rep(i, a, b) for (int i(a); i <= (b); ++i) 6 7 const int N = 100010; 8 9 struct node{ 10 int x, y; 11 friend bool operator < (const node &a, c

CF 383C Propagating tree [想法+树状数组]

题意: 给一棵树 给出两种操作: 1.在某个结点上加上一个值,在这个结点所有的儿子结点上减去这个值,在这个结点的所有孙子结点上加上这个值,在所有曾孙子结点上减去这个值,直到底. 2.查询某个结点上的值 分析: 把这个问题转化为树状数组的区间求和 样例经过dfs处理后如下,每个结点处理出了两个值l,r,层数1,2,3...,层数为奇数的属性为0,层数为偶数的属性为1 可以看到,子树下的结点的两个数值都是包含在子数的根结点的两数范围内的 而子树根结点的兄弟结点的两数范围则不是包含在子树根结点的两数范

【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅

这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着开学考试.而考试就意味着改卷,改卷 也就意味着答题卡.不幸的是,学校读答题卡的机器的评分软件坏了,wyx 就被 老师要求写一个评分的程序. [问题描述] 软件需要读入学生的姓名.试题答案以及学生的答题卡信息. 学生姓名 学校的信息管理系统中存储了所有学生的姓名,一共 名学生.每个学生的 名字的组成只

2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ&#39;s Salesman 【离散化+树状数组维护区间最大值】

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 919    Accepted Submission(s): 290 Problem Description YJJ is a salesman who h

7月31号=》311页-315页

13.6.1 语句块 所谓语句块就是使用花括号包含的多个语句,语句块是一个整体的执行体,类似于一个单独的语句. 代码示范: { a = 1; b = 2; alert(a+b); } 13.6.2 空语句 最简单的空语句仅有一个分号(;) 代码示范: //空语句 ; //使用空语句完成数组的初始化 var a = []; for(var i = 0;i<10;a[i++] = i+20); 13.6.3 异常抛出语句 JavaScript支持异常处理,支持手动抛出异常.当JavaScript需要

Ryuji doesn&#39;t want to study 2018徐州icpc网络赛 树状数组

Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, each book has its knowledge a[i]a[i]. Unfortunately, the longer he learns, the fewer he gets. That means, if he reads books from ll to rr, he will get a

uva 12356 Army Buddies 树状数组解法 树状数组求加和恰为k的最小项号 难度:1

Nlogonia is fighting a ruthless war against the neighboring country of Cubiconia. The Chief General of Nlogonia's Army decided to attack the enemy with a linear formation of soldiers, that would advance together until conquering the neighboring count

2018年四校联合周赛-第二场 B.异或和问题(二维树状数组)

异或和问题 TimeLimit:1000MS  MemoryLimit:256MB 64-bit integer IO format:%I64d Problem Description 现在有一个n行n列的矩阵.初始状态下,矩阵里的所有值都为0.行的编码是从1到n,列的编码也同样是从1到n. ai,?j.是在第i行第j列的数.子矩阵(x0, y0, x1, y1)是由ai,?j. (x0?≤?i?≤?x1, y0?≤?j?≤?y1)组成的矩阵. 现在需要进行下列的两个操作:       1.查询

[ACM-ICPC 2018 沈阳网络赛] Ka Chang (dfs序+树状数组+分块)

Given a rooted tree ( the root is node 11 ) of NN nodes. Initially, each node has zero point. Then, you need to handle QQ operations. There're two types: 1\ L\ X1 L X: Increase points by XX of all nodes whose depth equals LL ( the depth of the root i