![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构 -- 树状数组
Object_S
Java C++
展开
-
AW244 谜一样的牛
题目地址易错点:每头牛对应一个身高,且所有身高在范围[1~n]内.(预处理时需要在树状数组中提前加入每个身高) 每头牛所属的位置是它前面牛数量+1,例如:小A分数比小B分数大的数值为无穷小,那么小B的名次就是小A的后一名。因此,在查询位次(即身高)时需要使用query(a[i]+1).#include<cstdio>#include<iostream>...原创 2019-09-23 12:41:59 · 126 阅读 · 0 评论 -
AW241 楼兰图腾
题目地址易错点:获取较小值时注意要使用a[i]-1(相等的不能用于计数).#include<cstdio>#include<iostream>#include<cstring>#define ll long longusing namespace std;const int MAXN=200006;int lowbit(int x){...原创 2019-09-23 23:54:22 · 130 阅读 · 0 评论 -
关于树状数组的几点总结
本文不一定适合初学者零、树状数组的基本概念1.概念:树状数组是一种支持对数列进行快速的区间操作(如:区间编号为1~10的值统一增加某个数)的数据结构。2.实现原理:二进制加法 位运算 补码和原码 (第一个决定了这个数据结构的理论有效性,第二和第三个决定了具体实现)3.特性:如果观察树状数组的结构,可以发现:树状数组的结构就像是一个去掉右结点的线段树的结构.(这决定...原创 2018-11-25 22:06:04 · 1042 阅读 · 0 评论 -
AW246 区间最大公约数
题目地址易错点:线段树查询时直接保留查询范围即可. 线段树递归结束后,返回gcd结果时应取绝对值. 本题线段树初始化时需要使用差分数组(更相减损术);同样地,在进行区间修改时[l~r]的修改会影响到线段树内[l~r+1]的值.#include<cstdio>#include<iostream>#include<cstring>#incl...原创 2019-09-25 00:22:56 · 331 阅读 · 0 评论