![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构-树状数组
Maxwei_wzj
AFO
展开
-
【Ural1028】Stars-线段树和树状数组入门题
【Ural1028】Stars-线段树和树状数组入门题原创 2016-07-26 19:50:39 · 332 阅读 · 0 评论 -
【BZOJ4825】单旋(AHOI&HNOI2017)-set+树状数组
测试地址:单旋 做法:本题需要用到set+树状数组。 首先,我们注意到题目中单旋只涉及到最小值和最大值,考虑到旋转是对称的,我们先只考虑单旋最小值的情况。 显然目标点每次都是往右旋转,往右旋转对点的影响是:该点的右子树深度没有影响,该点深度减少111,而对于其它影响到的点深度都增加111。那么我们可以得到一个非常优美的性质:每一次单旋,除了以目标点为根的子树外,其它所有点深度都增加111。并...原创 2018-05-11 20:45:32 · 345 阅读 · 0 评论 -
【BZOJ2527】Meteors(POI2011)-整体二分+树状数组
测试地址:Meteors 题目大意:一个环上有mmm个区域,有nnn个国家,每个国家管辖一些区域,有kkk场陨石雨陆续降落,每场陨石雨会给一个环上的区间内的每个区域提供AiAiA_i颗陨石,现在每个国家都有采样任务,即要在他们管辖的区域中收集共PiPiP_i颗陨石,问每个国家最早在第几场陨石雨后就可以完成任务。 做法:本题需要用到整体二分+树状数组。 首先,如果只有一个询问,我们就可以用二分...原创 2018-05-20 20:19:28 · 136 阅读 · 0 评论 -
【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组。 首先,我们发现每次拔高的区间都是一个后缀。这个自己画一画就大概能证出来了。 那么我们就有了一个状态定义:令f(i,j)f(i,j)f(i,j)为前iii个后缀被拔高了jjj次能获得的最长不下降子序列长度,有状态转移方程: f(i,j)=1+max{f(p,q)|p<i,q≤j,ap−ai≤j−q}f(i,j)=1+ma...原创 2018-05-16 17:29:04 · 181 阅读 · 0 评论 -
【BZOJ1062】糖果雨(NOI2008)-数形结合+二维树状数组
测试地址:糖果雨 做法:本题需要用到数形结合+二维树状数组。 这题看上去非常没有思路,因此我们来一步一步整理一下思路。 首先,我们要发现线段的颜色互不相同,并且移动的速度相等,这就说明它们的运动是周期性的,并且周期都是2len2len2len。原先我们要用一个三元组(t,l,r)(t,l,r)(t,l,r)来表示一条线段,而发现了上面的共性之后,我们就可以用一个二元组(time,length...原创 2018-06-13 11:38:58 · 444 阅读 · 0 评论 -
【BZOJ1264】基因匹配(AHOI2006)-DP+树状数组
测试地址:基因匹配 做法:本题需要用到DP+树状数组。 考虑最基本的求LCS的DP,令f(i,j)f(i,j)f(i,j)为以第一个串第iii个字符结尾,用第二个串的前jjj个字符进行匹配,能得到的LCS长度。有以下状态转移方程: 当Ai≠BjAi≠BjA_i\ne B_j时:f(i,j)=f(i,j−1)f(i,j)=f(i,j−1)f(i,j)=f(i,j-1); 当Ai=BjAi=B...原创 2018-06-19 10:16:22 · 283 阅读 · 0 评论 -
【BZOJ3648】寝室管理-环套树+点分治+树状数组
测试地址:寝室管理 题目大意:给定一棵树或环套树,求图中经过至少kkk个点的路径数。 做法:本题需要用到环套树+点分治+树状数组。 先考虑树上的做法。对于这种树上路径计数的问题,应该能形成一种条件反射了,不能DP马上想到点分治。点分治中,每一次我们考虑过某个点的合法路径数时,先把子树列成一列,对于一棵子树里的所有点,它到根的距离disdisdis和之前子树中的点到根的距离xxx应该满足x+d...原创 2018-08-05 11:31:50 · 271 阅读 · 0 评论 -
【BZOJ5416】冒泡排序(NOI2018)-组合数学+树状数组
测试地址:冒泡排序 做法:本题需要用到DP+组合数学+树状数组。 一道神题,用到的数学知识并没有难到哪里去,但成功把我这种弱菜区分掉了。 首先,交换次数能达到题目中给的下界的充要条件是,排列中不存在长度≥3≥3\ge 3的下降子序列。因为要达到下界,每次交换都应该要“达到效果”,即两边的元素都往该去的方向移动。而一旦出现长度为333的下降子序列,就一定存在一次交换,使得对一个元素没达到效果,...原创 2018-08-18 13:36:40 · 351 阅读 · 0 评论 -
【BZOJ4538】网络(HNOI2016)-整体二分+树上差分+树状数组
测试地址:网络做法: 本题需要用到整体二分+树上差分+树状数组。各位大佬想的都是用一些树链剖分+线段树套堆这种诡异操作,O(mlog3n)O(m\log^3n)O(mlog3n)卡进去的,然而像我这种常数爆大选手根本不敢写…于是发现还有222个log\loglog的方法,还是挺神的。考虑只有一个询问的时候,二分答案,每次二分一个midmidmid,要知道这个询问的答案是不是大于midmi...原创 2018-09-19 22:24:21 · 204 阅读 · 0 评论 -
【BZOJ1146】网络管理(CTSC2008)-树状数组+主席树
测试地址:网络管理做法: 本题需要用到树状数组+主席树。经典的带修改树上路径第kkk大问题,不过我太菜了居然忘了有树上主席树这个东西…不带修改的话能用树上主席树做,那么带修改怎么办呢?因为一次修改会影响一棵子树上的所有线段树,所以我们还是把树拍成DFS序,就变成区间修改了。注意到查询的时候只是查单棵线段树,因此可以运用差分的方法,把上述操作变成单点修改,前缀和求和,这个就用树状数组套主席树(...原创 2018-10-16 10:30:47 · 185 阅读 · 0 评论 -
【CF856D】Masha and Cactus-树形DP+LCA+树状数组
测试地址:Masha and Cactus题目大意: 给定一棵树,再给定mmm条边,每条边有权值,从里面选出一些边加入树中,使得形成的图是仙人掌,即每个点至多处在一个环中的图,并使得加入的边的权值和最大,求出这个最大值。做法: 本题需要用到树形DP+LCA+树状数组。首先转化一下问题。不难想到,添加一条边会使得树上的一条路径上的点被一个环覆盖,那么要使一个点至多在一个环中,也就是要求添加的边...原创 2018-12-01 17:54:19 · 485 阅读 · 0 评论 -
【BZOJ3529】数表(SDOI2014)-莫比乌斯反演+树状数组
测试地址:数表 做法:本题需要用到莫比乌斯反演+树状数组。 首先忽略aaa的限制,我们要求的是: ans=∑ni=1∑mj=1D(gcd(i,j))ans=∑i=1n∑j=1mD(gcd(i,j))ans=\sum_{i=1}^n\sum_{j=1}^mD(\gcd(i,j)) 其中D(i)D(i)D(i)指iii的约数和。 我们把上式改成枚举公因数ddd,不妨设n≤mn≤mn\le m...原创 2018-05-05 11:38:58 · 279 阅读 · 0 评论 -
【BZOJ4548】小奇的糖果-树状数组+链表+扫描线
测试地址:小奇的糖果 做法:本题需要用到树状数组+链表+扫描线。 取走的糖果不包含全部的颜色,也就意味着至少有一种颜色不取。 考虑计算不取某种颜色的点的最佳方案,先考虑选择线段下方的方案,可知:如果有一个该颜色的点(x,y)(x,y)(x,y),则表示在所取的线段纵坐标≥y≥y\ge y时,线段的横坐标区间不能跨越xxx。因此我们从上到下考虑每个该颜色的点(x,y)(x,y)(x,y),考虑...原创 2018-04-09 17:20:23 · 272 阅读 · 0 评论 -
【BZOJ3289】Mato的文件管理-莫队算法+树状数组
测试地址:Mato的文件管理 做法:本题需要用到莫队算法+树状数组。 在想区间维护之前,首先要思考这个最小交换次数到底是个什么东西。实际上,答案就是这个区间中的逆序对数。我们现在证明一下这个结论。 我们知道排完序后逆序对数为000,而且只有这样的一个状态逆序对数才有可能为000,而其他状态都是有逆序对的。显然对于这些状态一定存在一个iii使得Ai>Ai+1Ai>Ai+1A_i>A...原创 2018-02-23 22:11:36 · 234 阅读 · 0 评论 -
【HDU1166】敌兵布阵-单点修改和区间求和
【HDU1166】敌兵布阵-单点修改和区间求和原创 2016-07-26 20:02:31 · 275 阅读 · 0 评论 -
【POJ3067】Japan-区间求和
【POJ3067】Japan-区间求和原创 2016-07-26 20:09:23 · 783 阅读 · 0 评论 -
【POJ2299】Ultra-Quicksort-逆序对
【POJ2299】Ultra-Quicksort-逆序对原创 2016-07-27 22:13:23 · 340 阅读 · 0 评论 -
【HOJ2275】Number Sequence-组合
【HOJ2275】Number Sequence-组合原创 2016-07-27 22:20:57 · 352 阅读 · 0 评论 -
【HOJ1867】经理的烦恼-区间求和+判素数
【HOJ1867】经理的烦恼-区间求和+判素数原创 2016-07-27 22:28:07 · 288 阅读 · 0 评论 -
【HOJ2430】Counting the Algorithms-区间维护
【HOJ2430】Counting the Algorithms-区间维护原创 2016-07-29 00:03:30 · 352 阅读 · 0 评论 -
【HOJ1640】Mobile Phone-二维树状数组
【HOJ1640】Mobile Phone-二维树状数组原创 2016-07-29 00:04:31 · 434 阅读 · 0 评论 -
【Vijos-P1512】SuperBrother打鼹鼠-二维树状数组
【Vijos-P1512】SuperBrother打鼹鼠-二维树状数组原创 2016-07-29 11:09:12 · 564 阅读 · 0 评论 -
【POJ2155】Matrix-二维树状数组+前缀和
【POJ2155】Matrix-二维树状数组+前缀和原创 2016-07-29 22:11:49 · 647 阅读 · 0 评论 -
【NOIP2013提高组】火柴排队-逆序对
【NOIP2013提高组】火柴排队-逆序对原创 2016-07-29 22:30:53 · 319 阅读 · 0 评论 -
【POJ3321】Apple Tree-DFS+树状数组维护
【POJ3321】Apple Tree-DFS+树状数组维护原创 2016-07-29 22:34:03 · 297 阅读 · 0 评论 -
【ZOJ2112】Dynamic Rankings-树状数组套主席树+离散化
【ZOJ2112】Dynamic Rankings-树状数组套主席树+离散化原创 2017-03-15 18:46:13 · 568 阅读 · 0 评论 -
【BZOJ3295】动态逆序对(CQOI2011)-CDQ分治:三维偏序
【BZOJ3295】动态逆序对(CQOI2011)-CDQ分治:三维偏序原创 2017-05-05 17:11:26 · 800 阅读 · 0 评论 -
【HDU5412】CRB and Queries-整体二分:带修改区间第K小
【HDU5412】CRB and Queries-整体二分:带修改区间第K小原创 2017-05-07 11:37:52 · 643 阅读 · 0 评论 -
【BZOJ2434】阿狸的打字机(NOI2011)-AC自动机+树状数组
测试地址:阿狸的打字机 做法:本题需要用到AC自动机+树状数组。 因为题目是一个多模式串的匹配问题,所以很快想到对所有输出的字符串建AC自动机。 根据AC自动机的性质,如果一个点能够通过failfailfail指针走到另一个点,表示这个点代表的字符串的一个后缀等于走到的点代表的字符串。那么我们要知道串YYY中有多少串XXX,就是求在从根到代表串YYY的点的路径上,有多少个点能通过failfa...原创 2018-03-15 22:14:04 · 238 阅读 · 0 评论 -
【BZOJ3744】Gty的妹子序列-序列分块+树状数组
测试地址:Gty的妹子序列 做法:本题需要用到序列分块+树状数组。 求区间逆序对数,我们知道可以用莫队算法+树状数组来做离线做法,但是这题强制在线,我们应该怎么办呢? 还是考虑分块,将序列分成n−−√n\sqrt n块,每块有n−−√n\sqrt n个元素。我们需要尽可能快的处理出尽可能多的区间内的逆序对数,这样可以有助于我们进行下一步操作。令num(l,r)num(l,r)num(l,r)...原创 2018-03-02 12:53:39 · 529 阅读 · 0 评论