树状数组
文章平均质量分 78
WilliamSun0122
这个作者很懒,什么都没留下…
展开
-
poj3468-树状数组 一维 区间更新 区间查询
其实这题应该是线段树区间更新的模板题,我现在用树状数组的方法做理解树状数组一维的区间更新和区间查询需要一些基础(知道的直接继续往下看):树状数组 一维 单点更新 区间查询(最基础):http://blog.csdn.net/williamsun0122/article/details/70679766树状数组 一维 区间更新 单点查询:http://blog.csdn.net/williamsun0原创 2017-05-10 19:19:41 · 463 阅读 · 0 评论 -
hdu2642-二维树状数组 单点更新 区间查询
我之前已经把一维的树状数组都写了,接下来我来写一下二维的树状数组。其实二维的树状数组和一维的没有本质和差别,可以说就是扩展了一维,其余一样。来看看二维树状数组单点更新、区间查询的问题: 就是一个矩阵,进行两种操作。 1. 对矩阵里的某个数加上一个数 2. 查询某个子矩阵里所有数字的和我们看看树状数组是怎么扩展到二维的。和一维一样,设a[][],c[][],我们看看这时候c[][]的组成。 设原创 2017-05-11 17:02:53 · 770 阅读 · 0 评论 -
poj2155-二维树状数组 区间更新 单点查询
就像我之前讲二维树状数组单点更新、区间查询一样,二维树状数组与一维没有本质差别,多维的可以通过一维的类推出来。现在我们由一维树状数组的区间更新、单点查询类推一下二维树状数组的区间更新、单点查询。 首先二维树状数组的区间更新应该是一个矩形区域,我们要更新(x1,y1)到(x2,y2)(x1<=x2,y1<=y2)的矩形区域时由一维类推应该这样:update(x1,y1)-update(x1,y1+1原创 2017-05-12 20:35:12 · 957 阅读 · 0 评论 -
树状数组专题
基础和原理可以看看我写的总结:http://blog.csdn.net/WilliamSun0122/article/details/70679766一维 单点更新 区间查询这个用法是树状数组最基础的用法,我的总结里面就是以这个用法为例讲的。直接贴模板,详细见我树状数组总结的博客。int lowbit(int x){ return x&(-x);}int update(原创 2017-05-09 19:57:24 · 435 阅读 · 1 评论 -
hdu1541 树状数组
题意给你n个星星 (1<=N<=15000)和每个星星的坐标x,y(0<=X,Y<=32000),每个坐标不相同,且给出的坐标是按列序升序排列,列序相同则按行序升序排列。定义星星的等级是该星星左下角的星星个数(包括正下和正右),最后要你输出等级从0到n的星星个数。题解因为按给出的坐标的规则,前面的点一定在后面点的左面或者与它同列。所以该星星的等级即是前面星星中行序比它小的星星个数。这里有一个tric原创 2017-04-25 11:43:40 · 312 阅读 · 0 评论 -
树状数组总结
了解树状数组树状数组这个数据结构是在设计压缩算法时被发现的。我觉得其中最重要的是运用了二进制的思想。(这个接下来会重点说)树状数组的用途就是维护一个数组,重点不是这个数组,而是要维护的东西,最常用的求区间和问题,单点更新。但是某些大牛很6,完成部分线段树能完成的功能,比如区间更新,区间求最值问题。树状数组是一个可以很高效的进行区间统计的数据结构。在思想上类似于线段树,比线段树节省空间,编程复杂度比线原创 2017-04-25 11:01:27 · 471 阅读 · 0 评论 -
树状数组 逆序对变形 2017HZAU现场赛G-Sequence Number
题目链接:http://acm.hzau.edu.cn/problem.php?cid=1029&pid=6题意:给你n个数(1<=N<=50000 ),每个数 Ai (1<=Ai<=10^9)。求给你的数列中正序对的最大长度。两个数的长度是两个数序号的差。题解:因为给的数的范围比较大,所以要先离散化一下。然后用树状数组维护一下每个数前面的最小的数的序号,最后取最大即可。具体见代码注释。#inclu原创 2017-04-25 12:21:43 · 376 阅读 · 0 评论 -
hdu1556-树状数组 一维 区间更新 单点查询
这题可以说是树状数组区间更新,单点查询的模板题。对于树状数组的区间更新,单点查询,其实就是维护一个差分数组。以该题为例:定义两个数组a[],b[]。a[]数组表示气球涂色次数,初始均为0。设b[n] = a[n] - a[n-1](即b[]数组是a[]数组的一个差分数组),因为a[]数组初始均为0,所以b[]数组初始也为0,且b[1]+b[2]+…+b[n] = a[n] - a[0] = a[n]原创 2017-05-09 21:11:27 · 415 阅读 · 0 评论 -
hdu6102 容斥+树状数组 2017多校第六场1007
题意 给你n个数,这n个数是1-n的一个排列。再有m次询问,每次询问一个区间[l,r]的价值。区间价值定义为sumri=lsumrj=i+1sumrk=j+1gcd(sz[i],sz[j]==sz[k])∗sz[k]sum_{i=l}^r sum_{j=i+1}^r sum_{k=j+1}^r gcd(sz[i],sz[j]==sz[k])*sz[k]。题解 这道题关键就是怎么快速求一个区间中有原创 2017-08-14 15:56:52 · 581 阅读 · 0 评论