树状数组
qq_40432881
这个作者很懒,什么都没留下…
展开
-
树状数组相关应用之平面范围求和问题
平面范围求和此类问题实际上是树状数组推广到二维的情形平面子矩阵求和:POJ-2352此题是求【0–x】【0–y】矩阵中除自身【x】【y】外的求和二维解法:#include <iostream>#include <cstring>#include <algorithm>#include <stdio.h>#define M...原创 2018-10-18 12:58:15 · 148 阅读 · 1 评论 -
树状数组相关应用之区间包含问题
区间包含问题对于一维区间问题一般是采用定一议二的方法区间外包含问题:POJ-2481对于此问题我们可以先按x升序排序(x值相同,y大的排在前面),保证之后输入的区间的左端必在之前输入区间之内,若x值相等,y降序,则之后输入区间的右端必在之前输入区间之内,那么此题便转化为对y求后缀数组和问题#include <iostream>#include <cstring>...原创 2018-10-18 13:21:42 · 283 阅读 · 1 评论 -
树状数组相关应用之逆序对问题
求逆序对一元逆序对问题:POJ-2299此题本质是一个求逆序对问题,对于一个无序数列,我们按照其顺序依次输入,并在每次输入时通过树状数组对已输入数列在其后方的序列进行个数求和,即可得到逆序数(先输入却比他大,在其后方)需要注意的是数列的值可能相差较大,如果按值更新树状数组会浪费很多空间,对于此问题我们可以利用数据的离散化来处理#include &lt;iostream&gt;#inc...原创 2018-10-17 20:25:28 · 141 阅读 · 0 评论 -
关于树状数组的个人理解
以下内容部分转载于:彻底理解树状数组树状数组彻底入门树状数组(Binary Indexed Tree)——二进制索引树树状数组问题模型首先我们搞明白树状数组是用来干嘛的,现在有一个这样的问题:有一个数组a,下标从0到n-1,现在给你w次修改,q次查询,修改的话是修改数组中某一个元素的值;查询的话是查询数组中任意一个区间的和,w + q &amp;amp;lt; 500000。这个问题很常见,首先分...原创 2018-10-13 00:17:21 · 259 阅读 · 1 评论 -
树状数组相关应用之区间更新单点查询问题
区间更新单点查询树状数组的基本应用是单点更新,区间查询(例如求区间和)。鉴于树状数组的空间复杂度和时间复杂度都比线段树小 而且代码也短 所以就有大神用强大的脑洞YY出了区间修改+单点查询的树状数组区间更新原理差分法设a数组表示原始的数组;设d[i]=a[i]-a[i-1] (1<i≤n,d[1]=a[1]);设f[i]=f[i-1]+d[i] (1<i≤n,f[1]=...原创 2018-10-24 20:57:54 · 387 阅读 · 0 评论 -
树状数组相关应用之二元变量结构体组队问题
一维数组处理二元问题此类问题的处理方法一般采用定一议二POJ—1900:Moofest思路: 树状数组分析:1 题目给定n头牛的听力v[i]. 现在规定两头你i和j如果要进行交流的话那么消耗的能量就是dis(i,j)max(v[i].v[j]),现在问n头牛总共的n(n-1)*2种方式消耗的总的能量2 题目要求的是所有的牛的交流方式的总的消耗能量看这个样例3 12 52 6...原创 2018-10-30 09:39:18 · 182 阅读 · 1 评论 -
树状数组相关应用之多叉树子树问题
Poj-3321:Apple Tree题意:卡卡的房子外面有一棵苹果树。每年秋天,树上都会长出许多苹果。卡卡非常喜欢苹果,所以他一直在精心培育着这棵大苹果树。这棵树有N个分叉,这些分叉由树枝相连。卡卡把叉的编号从1到N,根编号总是1。苹果会在叉子上生长,两个苹果不会在同一个叉子上生长。卡卡想知道一个子树上有多少个苹果,因为他研究的是苹果树的生产能力。问题是一个新的苹果可能会在空叉子上生...原创 2018-10-27 11:11:56 · 596 阅读 · 1 评论 -
树状数组模板类
树状数组//树状数组类class BITree{//树状数组数值处理部分:1~BITree_num //实际操作中建议数组开大一点public: BITree(int dim,int x,int y); //构造(维数,树状数组长度) ~BITree(); //析构 in...原创 2018-10-30 20:29:45 · 134 阅读 · 0 评论