![](https://img-blog.csdnimg.cn/21fd428325814405bbd55994095747f4.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
树状数组
文章平均质量分 84
StaroForgin
这个作者很懒,什么都没留下…
展开
-
[NOI Online 2022]如何正确地排序
又被OneInDark吊打了,他是真的强。|*´Å`)ノ原创 2022-03-27 19:49:56 · 678 阅读 · 6 评论 -
[FJWC2018]欧拉函数
**卡常题,卡了一下午。原创 2022-01-13 20:28:08 · 370 阅读 · 2 评论 -
[CodeChef Jump]Jump mission
然而空间好像有点大原创 2021-08-26 15:34:17 · 155 阅读 · 0 评论 -
[雅礼集训 2017 Day7]事情的相似度
事情的相似度题解挺好想的一道题。相当于要求一个区间的前缀的最长公共后缀。应该很容易就能想到后缀自动机。貌似有人用LCT做我们可以先将SAM建出来,而两段后缀的lcs就是它们的lca的深度。我们要求的相当于编号在一个区间中的点的lca的最大深度。考虑启发式合并,对于点uuu的子树集合SuS_{u}Su与它的儿子vvv的子树集合SvS_{v}Sv,我们在将它们合并在一起时,可以知道在这两个集合中的点互相匹配,它们的lcs就是lenulen_{u}lenu。如果将这些点对一一记录下来会达到n2原创 2021-02-20 21:15:55 · 163 阅读 · 0 评论 -
[ZJOI2013]K大数查询
K大数查询题解整体二分板子题。其实看到题目应该很容易想到整体二分的。我们可以先二分答案,对于权值区间[l,r][l,r][l,r],我们的询问区间为[L,R][L,R][L,R]。我们可以用一个树状数组维护前缀和,维护大于midmidmid的数的数量的前缀和。我们先将[L,R][L,R][L,R]中大于midmidmid的操作加到树状数组上,再看询问中有多少应该在左区间[l,mid][l,mid][l,mid],有多少应该在右区间(mid,r](mid,r](mid,r]。将在左区间的询问减去原创 2021-02-16 22:14:21 · 174 阅读 · 0 评论 -
[SDOI2014]数表
数表题解挺简单的一道题。题目可以简化为∑i∈[1,n]∑j∈[1,m]g[(i,j)][g[(i,j)]≤a]\sum_{i\in [1,n]}\sum_{j\in[1,m]}g[(i,j)][g[(i,j)]\leq a]∑i∈[1,n]∑j∈[1,m]g[(i,j)][g[(i,j)]≤a]。其中,g(x)g(x)g(x)表示xxx的约数和。虽然原题也够简洁了我们还是先推一下式子。令f(x)=∑i∈[1,n]∑j∈[1,m][(i,j)==x]f(x)=\sum_{i\in[1,n]}\s原创 2021-01-09 17:25:25 · 158 阅读 · 0 评论 -
[CF461C]Appleman and a Sheet of Paper
Appleman and a Sheet of Paper题解由于一张纸条翻折掉的部分会消失,所以如果每次操作都将小的一半折到大的一部分上,时间复杂度应该是趋近的。由于从右边往左边折时需要一个翻折操作,需要用个标记记录下来,如果暴力翻会T。但询问操作要求一段区间的和,所以需要先拿一个树状数组去维护每一位,这样修改与查询的时间复杂度都成了。不过其实暴力翻也可以不T,一些玄学优化可以卡过去。源码正解#include<bits/stdc++.h>using name原创 2020-08-16 15:46:13 · 115 阅读 · 0 评论 -
[CF869E]The Untended Antiquity
The Untended Antiquity题解好水的题呀由于没有矩形相交,任意两个矩形只存在包含与相离两种关系,由于要求的是两个点是否在同一矩阵中,我们可以对其进行染色,比较两点是否被染成同一颜色。由于,的暴力染色明显会T,可以考虑通过二维树状数组进行区间修改,将复杂度降到。但是存在包含的关系,同一点可能被多个矩形覆盖,而最后计算的应为面积最小的那个矩形,所以可以考虑离散化,由于在同一矩形中的两点所被覆盖的矩形应该是相同的,所以可以将其加起来判断。源码#include&.原创 2020-08-16 10:50:16 · 104 阅读 · 0 评论 -
[NOI Online 提高组]冒泡排序
冒泡排序题解反正我考场上是错的就对了。本题是要求逆序对数量,经过k次排序的逆序对数。于是很容易联想到这道冒泡排序。由于时间复杂度的限制,我们的暴力明显只能拿20pts,毕竟是的。换言之,我们必须知道每一轮冒泡排序对逆序对整体数量的影响,从联想的题目枚举推测可得,是左边有比它本身值大的数的个数。因为对于一个数在一轮冒泡排序中,如果它的左边有数比它本身大,那在本轮排序中它肯定会...原创 2020-03-10 08:37:17 · 294 阅读 · 0 评论 -
不勤劳的图书管理员
不勤劳的图书管理员题解很明显的一道动态逆序对的题,我们可以通过在每次交换时维护它的两点对交换的贡献得出答案。不过如果我们只用的方法暴力去维护的话就只能得到20分,于是我们开始想优化。有些大佬们用分块+CDQ分治秒了这道题,比笔者的树套树快了好多,不过笔者也只会打树状树组套线段树。好了,讲一下树套树怎么打这道题。我们内层用线段树维护它的权值,外层用树状数组维护区间。每次查询时...原创 2019-12-09 14:37:53 · 156 阅读 · 0 评论 -
冒泡排序
冒泡排序题解看到这个题目,我们需要先考虑一下冒泡排序的原理。我们可以发现冒泡排序对于一个数来说,如果它前面没有比它大的点,它会一直向右移动到下一个比它大的点。最后回到它应在大小的位置。于是,我们可以先用树状数组处理出比它小的值,一轮一轮一直模拟到没有能处理完一轮的时候,最后用冒泡模拟剩下的可以交换的数的交换。源码#include<cstdio>#includ...原创 2019-12-07 13:51:26 · 105 阅读 · 0 评论