Book 树状数组 小结】的更多相关文章

树状数组(Binary Indexed Tree(BIT), Fenwick Tree) 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有 元素之和,但是每次只能修改一个元素的值:经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值. 这种数据结构(算法)并没有C++和Java的库支持,需要自己手动实现.在Competitive Programming的竞赛中被广泛的使用.树状数组 和线段树很像,但能用树状数组解决的问题,基本上都…
差不多花了10天学树状数组,是照着这篇博客做的题目,还差几道---------- http://blog.csdn.net/chenguolinblog/article/details/9916229 1.几个注意的地方 1)lowbit(0) + 0 会无限循环,会导致tle掉,给输入进去的x++一下就好 2)当给的x的范围很大的时候,注意要离散化 2.然后就是两个基本的操作 1) add() 2) sum() 3.复杂度是log (n) 4.现在做到的题目有这些 1)  单点更新,区间求和,…
Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8984    Accepted Submission(s): 4594 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球…
概要: 就是用来维护区间信息,然后各种秀智商游戏. 技巧及注意: 一定要注意标记的下放的顺序及影响!考虑是否有叠加或相互影响的可能! 和平衡树相同,在操作每一个节点时,必须保证祖先的tag已经完全下放. size值的活用:主席树就是这样来的.支持区间加减,例题和模板:主席树 01(就是更新和不更新等这种对立操作)情况:我们就要在各个更新的操作中明白一件事,那就是总和不变.假设维护的是size,那么假设是标记下放,那么更新为(r-l+1)-size,例题: [wikioi]1690 开关灯(线段树…
线段树 什么时候用线段树 1.统计量可合并 2.修改量可合并 3.通过统计量可直接修改统计量 一句话:满足区间加法即可使用线段树维护信息 理解Lazy Tage 蓝色是要把信息及时维护的节点,红色是本次区间修改操作Lazy Tage下传停止的位置. 模板  Just a Hook  HDU-1698 #include<iostream> #include<cstdio> #include<algorithm> #include<vector> #includ…
题目描述 给定一个1~n的序列,然后m次删除元素,每次删除之前询问逆序对的个数. 分析:分块+树状数组 (PS:本题的CDQ分治解法见下一篇) 首先将序列分成T块,每一块开一个树状数组,并且先把最初的答案统计完成. 对于每一次删除,找到对应位置,考虑删除之后的增减情况: ①块内:直接暴力,对于左边,少了比它大的个数,对于右边,少了比它小的个数, ②块外:枚举每一块.对于左边,少了比它大的个数,对于右边,少了比它小的个数,. 然后把这个位置的数分别从数组和树状数组中删除,. 为了最小化时间,我们使…
Why Did the Cow Cross the Road III bzoj-4994 Usaco-2017 Feb 题目大意:给定一个长度为$2n$的序列,$1$~$n$个出现过两次,$i$第一次出现的位置记为$a_i$,第二次记为$b_i$,求满足$a_i<a_j<b_i<b_j$的个数. 注释:$1\le n\le 10^5$. 想法: 这个题有一个非常不一样的地方. 我记得我之前做过的长成这样的题大概都是第一个位置+1,第二个位置-1即可. 这个题我们只能对第一个位置进行操作.…
Meteors bzoj-2527 Poi-2011 题目大意:题目链接. 注释:略. 想法: 首先答案可以离线,且具有单调性. 这里的单调性就是随着时间的推移,每个国家收集的陨石数增加. 不难想到整体二分,对时间进行二分. 但是有一个问题,就是一个国家出现了多次,这样的话我们用链表把他们记录到一起即可,二分的时候传链头. 这个题就是用树状数组+差分实现区间加. 先把$[l,mid]$的操作都用树状数组加上.然后枚举当前还没有答案的国家:每一个都访问整条链加一起跟自己需要的$k$判断一下扔进左区…
矩阵乘法 bzoj-2738 题目大意:给定一个$n*n$的矩阵.每次给定一个矩阵求矩阵$k$小值. 注释:$1\le n\le 500$,$1\le q\le 6\cdot 10^4$. 想法: 新操作整体二分. 整体二分是一个必须离线的算法而且所求的答案必须满足单调性. 所谓单调性就是比如这个题:k越大那么对应的答案越大. 进而我们将所有操作在权值上整体二分. 每次假设当前权值区间为$[l,r]$. 先用二维树状数组求出每个矩形[l,mid]中的点个数然后暴力转移即可. 暴力转移就是看一下$…
二逼平衡树 bzoj-3196 Tyvj-1730 题目大意:请写出一个维护序列的数据结构支持:查询给定权值排名:查询区间k小值:单点修改:查询区间内定值前驱:查询区间内定值后继. 注释:$1\le n,m\le 5\times 10^4$. 想法: 在这里给予三种题解: 1)首先,最容易想到的应该就是树状数组套主席树也就是常说的带修改主席树. 第一个操作是简单的,我们只需要提取出当前区间的权值线段树后在上面二分即可. 第二个操作是主席树的看家本领好伐 第三个操作就是待修改主席树的意义.我们利用…