随笔分类 - 题解 / 数据结构 / 分块
摘要:真,顶级毒瘤题目,浪费我至少一天。 首先不难想到对于修改,有一个暴力序列线段树做法: 如果当前区间的最大值 ,那么直接返回,无法进行修改。 如果当前区间的最小值 ,那么区间减,打上懒标记即可。 否则,就暴力修改左右儿子然后 。
阅读全文
摘要:非常好之 使我的代码旋转。 看到这个题,第一反应显然是如果我们能够每次确切的找到要除的数,然后用树状数组进行单点修改,那么就可以达到 的复杂度。 那么接下来就是考虑如何去找到能除的数。 首先,我们不难
阅读全文
摘要:前言 一道好题,也就花了我一个下午而已。 本人做法比较清奇,可以当做开阔思路参考,并不太建议实操(太难调了!)。 文章较啰嗦,谅解。 思路 众所周知,我并不太喜推式子,所以我们考虑直接根据题目限定的条件硬刚。 首先,我们先假定 为根,并求出每个点的子树的大小,记为数组 ,
阅读全文
摘要:又是一道满级性质题,第一次在分块里面打堆这种东西。 感觉做了一堆 之后,还是啥也不会。 首先这种神奇题目,还有这个神级时限,没有很好的办法处理的时候,我们考虑对序列分块,设块长为 。 环不用去管,纯粹就是懒得好好造数据,直接破开就可以了。 需要明确的一点
阅读全文
摘要:前言 题目传送门 前置知识:分块,二分。 虽然本题是一个树套树,但在这里给出一个思维难度较低的分块算法。 思路 首先,看到这种排名或者前驱后继的问题我们第一眼想到权值线段树,但这是区间排名,需要可持久化再套一颗其他的树,为了避免思路太过复杂,我们考虑分块。 假设我们将整个序列分成 个块。
阅读全文