
树状数组
Chester_King
虽千万人,吾往矣。
展开
-
【BZOJ】2738 矩阵乘法 整体二分+树状数组
题目传送门伏地膜LYF大佬,连整体二分都会,不愧是一代神犇。向大佬低头,这位大佬讲的很详细,并且很好懂。整体二分,是一种离线的算法,就是对所有状态和询问一起二分。递归,每次对所有状态进行统计,然后根据当前所有状态的一半将当前所有询问进行划分。当所有状态只剩下一种时,就可计算当前所有询问的答案。当然,现在我还是初学整体二分,需要做更多的题目来熟练这种算法。附上AC代码原创 2017-05-24 19:01:29 · 419 阅读 · 2 评论 -
【POJ】2155 Matrix 树套树&&树状数组
题目传送门从此入坑树套树,感觉现在自己脑子里还是一片的浆糊啊……感觉树套树好神奇啊……这题是一道明显的矩阵修改问题。(其实我也不知道这题的类型是什么,但是形象一点就叫它矩阵修改问题吧)对于树套树的里外两层线段树的理解:第一层线段树表示横坐标坐标在区间[x1,x2]内的所有子矩阵,第二层线段树表示纵坐标在区间[y1,y2]内的所有子矩阵。显然用树套树的数据结构,我们可以把所有子矩阵映原创 2017-09-28 07:19:51 · 261 阅读 · 0 评论 -
【BZOJ】3295 [Cqoi2011]动态逆序对 树状数组+线段树
题目传送门 这题不是主席树!这题不是主席树!这题不是主席树!(重要的事情说三遍!!!)因为这题并不需要用到历史版本,所以我们不用主席树。这题的解题思路是树状数组套权值线段树+动态开点,并不是百度上大多数人说的主席树,还是hzwer大佬说的最正确了。回到这题,考虑删除一个数a[i],当前答案要减少1~i-1中比a[i]大的数的个数和i+1~n中比a[i]小的数的个数。显然这个可以用权值线段树轻松解决原创 2017-10-14 13:00:21 · 339 阅读 · 0 评论 -
【BZOJ】1901 Zju2112 Dynamic Rankings 树状数组+主席树
题目传送门树状数组套主席树什么的真的好迷啊……还是整体二分比较平易近人(大雾)。我们考虑主席树的修改,如果像以前一样前缀动态开点,那么修改一个点就要把后面的主席树全部重建,时间复杂度O(m×n×logn)O(m\times n\times\log n),和暴力差不多嘛……然后我们考虑在主席树外面套一个树状数组,这样既不会破坏前缀动态开点的性质,同时把时间复杂度降到了O(m×log2n)O(m\tim原创 2017-12-17 20:30:16 · 211 阅读 · 0 评论 -
【洛谷】2717 寒假作业 树状数组
题目传送门观察数据范围,n≤1e5n\le1e5,时间复杂度不是O(n)O(n)就是O(nlogn)O(n\log n),最多不过O(nlog2n)O(n\log^2n)。但这题显然O(n)O(n)没法搞,只能从O(nlogn)O(n\log n)来考虑了。直接把题意转化成一个等式:ai+ai+1+…+ajj−i+1≥k\frac{a_i+a_{i+1}+…+a_j}{j-i+1}\ge k,其中i原创 2017-10-29 21:12:32 · 337 阅读 · 0 评论 -
【CODE[VS]】1228 苹果树 树状数组
题目传送门为什么我拿到这题的第一反应是树剖啊……我到底在想些什么啊然而这题被分类在树状数组里,于是我就把想法往树状数组上靠,依然没有任何思路于是我放弃了树状数组的解法,想用树剖暴艹这题。却突然惊讶的发现:树剖你妹啊,这题不就是先序遍历后树状数组维护节点权值吗?被一道傻逼题浪费了一个小时的我表示t有一句mmp不知当不当讲……附上AC代码:#include <cstdio>#include <ccty原创 2017-12-13 20:44:06 · 384 阅读 · 0 评论 -
【BZOJ】2527 [Poi2011]Meteors 整体二分+树状数组
题目传送门这题的整体二分还是挺好想到的,代码也挺好写的。(比BZOJ3110好写多……)取当期的陨石波数的一半加入树状数组中,判断当前每个国家拥有的陨石数是否达到需求量,若达到则放到左区间中,也就是减小陨石数,反之则放到右区间,增加陨石数。orzZH大佬,当讲课人在上面放出了这道题时,ZH大佬瞟了一眼,哼了一声:“这题不是水题吗?还需要讲?”ZH大佬太强啦QWQ,%%%%%,献上我原创 2017-07-11 09:43:41 · 414 阅读 · 0 评论 -
【洛谷】2345 奶牛集会 树状数组
题目传送门题目描述:……摸牛仔的屁股……。话说这不是LYF最喜欢的游戏吗?考虑题目给出的公式,max(Vi,Vj)∗|Xi−Xj|max(V_i,V_j)*|X_i-X_j|,我们可以VV作为关键字排序,消除VV对统计答案的影响。这里我把VV从小到大排序。然后考虑绝对值,如果Xi>XjX_i>X_j,那么去掉绝对值就是Xi−XjX_i-X_j;否则就是Xi−XjX_i-X_j。(这TMD不是废话吗?原创 2017-10-25 19:39:33 · 427 阅读 · 0 评论 -
【洛谷】1637 三元上升子序列 树状数组
题目传送门赶紧去补一发树状数组,好像这个数据结构在NOIP里考察的频率挺高啊……(一口奶)考虑题目中三元组里的中间项jj,发现需要求出位置和权值都小于jj的个数ll与位置和权值都大于jj的个数rr,根据乘法原理,jj对答案的贡献即为l∗rl*r。于是我们用两个树状数组来维护上述的ll和rr即可。p.s.因为这题的三元组要求严格上升,我定义权值从小到大排序,对于权值相同的节点,把位置从大到小排序,这样原创 2017-10-25 19:39:07 · 340 阅读 · 0 评论 -
【BZOJ】1452 [JSOI2009]Count 树套树
题目传送门这题和上一题的二维树状数组其实差不多。定义f[k][i][j]表示区间为[i,n][j,n]中颜色为k的节点数。单点修改就把原来该节点颜色用-1更新,现在该节点颜色用1更新。区间查询也和上一题的更新差不多,差分一下就行了。话说这题也可以用线段树套线段树做,但是我觉得没有那个必要吧…… p.s.orz zzk,是zzk教会了我写输出优化,拿到了BZOJ上的rank2原创 2017-09-29 08:37:15 · 434 阅读 · 2 评论 -
【洛谷】2344 奶牛抗议 DP+树状数组
题目传送门这是一道普及组的题目……不要拦着我,我要跳楼……首先我们可以轻松写出状态转移方程:f[i]=Σf[j] (j这个DP的时间复杂度是O(n^2)的,显然过不了这题。然后我们就考虑有没有一种数据结构可以统计一个限度内的前缀和,显然树状数组满足了我们的要求。于是这题就A掉啦……p.s.这题的权值可能较大,记得在对权值离散化一下。再次p.s.记得考虑1~i这些元素分成原创 2017-09-20 21:36:00 · 279 阅读 · 0 评论 -
【CODE[VS]】1082 线段树练习 3 树状数组
题目传送门标题只是吸引你点进来的,这并不是一篇水博客,下面是有好东西的。曾经我们以为树状数组虽然常数比较小,代码简洁明了,非常好掌握,但可惜的是没有办法实现区间查询而放弃了树状数组去学线段树。我们并不能否认线段树的优秀,但是我们也不能否认树状数组的强大——树状数组是可以实现区间查询的!首先我们都了解树状数组的区间修改吧,其实就是利用了前缀和的性质罢了。(也就是差分)然后我们原创 2017-07-11 11:11:34 · 244 阅读 · 0 评论 -
【BZOJ】3110 [Zjoi2013]K大数查询 整体二分+树状数组 || 树套树
题目传送门让我缓缓……写了整整三天,终于A掉了……这题,真的恶心啊……这题最大的问题就是细节的问题,在码代码的时候记得一定要保持自己的状态,不能有一点的松懈,否则就像我一样……WA了10+发,TLE了三四发,心累啊……这题还是整体二分,对于那些写树套树的大佬我只能表示%%%了。因为题目给出的条件是abs(c)我们把修改和询问一起整体二分,取操作区间的一半,对于左半边的修改操原创 2017-07-12 07:25:14 · 647 阅读 · 0 评论