摘要: "传送门" 这道题是标准的树上带修改莫队。兔哥称之为“莫队的集大成者”。 先说一下树上莫队吧。树上莫队就是把莫队搬到了树上,它的算法仍然是通过对树进行分块,使得各个元素属于一个块,之后像普通的莫队一样,按照左右端点所属的块排序。至于树上分块的做法,直接看这篇博客的 "上一篇" 就好了。 然后我们说一 阅读全文
posted @ 2018-12-11 21:58 CaptainLi 阅读(117) 评论(0) 推荐(0) 编辑
摘要: "传送门" 基础的树上分块题。如何保证一个块内的元素在[B,3B]之间呢?这里有一个很简单的方法是直接dfs。在每次进入一棵子树之前,我们记录一下现在栈顶编号,之后在返回的时候,如果当前编号减去所记录的编号的差值要大于等于B,那就直接把它们加到一个块内。最后可能会剩余一些元素,直接压到最后一个块内即 阅读全文
posted @ 2018-12-11 21:40 CaptainLi 阅读(171) 评论(0) 推荐(0) 编辑
摘要: "传送门" 主席树大好题……这道题让主席树不仅停留在了区间第k大上,而是让它能执行像线段树一样的操作。 首先我们先说点套路的事。求中位数有一个二分法,就是每次二分答案,把大于等于当前二分的数设为1,小于的设为 1,之后我们只要看和是否大于0就能判断限制二分的值是大是小。然后虽然区间是不确定的,但是我 阅读全文
posted @ 2018-12-11 16:11 CaptainLi 阅读(204) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这次主席树要维护的是树上信息啦。 其实主席树基本的思想还是用前缀和,那么我们就仿照一下,在树上做前缀和就好啦。我们令第$i$个节点所在的主席树维护该点到根节点路径上的所有数(值域是数的值),之后在计算的时候,以$v[p] + v[q] v[lca(p,q)] v[fa[lca(p,q)] 阅读全文
posted @ 2018-12-11 15:54 CaptainLi 阅读(254) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这道题是主席树好题啊…… 题目大意:给定一个序列,每次给定一段区间,区间内所有不同的数第一次出现的位置排成一个序列,求这个序列的中位数。 其实求中位数并不是很难,只要我们能把这个序列中不同的数出现的位置都求出,就能很直接的转化为用主席树求静态第k小的问题。首先我们考虑一下如何计算区间内有 阅读全文
posted @ 2018-12-11 15:28 CaptainLi 阅读(98) 评论(0) 推荐(0) 编辑