摘要:
线段树合并 前置芝士 —— 动态开点 什么是动态开点,是用于处理一些区间跨度比较大,空间比较小的题目。 比如: $1 100000$ 建图,那就和 $1 2 3 …… 10000$ 一样的内存开销。 肯定是不可以直接建,那样空间会炸。 所以有 $2$ 中办法: $1.$ 离散化 这个办法是很早就开始 阅读全文
摘要:
动态开点 什么是动态开点,是用于处理一些区间跨度比较大,空间比较小的题目。 比如: $1$ $100000$ 建图,那就和 $1$ $2$ $3$ …… $10000$ 一样的内存开销。 肯定是不可以直接建,那样空间会炸。 所以有 $2$ 中办法: $1.$ 离散化 这个办法是很早就开始用了的,也比 阅读全文
摘要:
主席树 首先考虑一个比较经典的问题,你有一个静态的数列,每次询问一段区间 \(l \to r\) 内的第 \(k\) 小。 做法的一句话介绍,巨的人就不要往下翻了。 对于原序列的每个前缀维护一颗线段树,维护这个区间,并且这些线段树满足可减性。 接下具体解释下, 考虑一个静态区间上维护区间信息,一般会 阅读全文
摘要:
启发式合并 先看看什么是启发式算法。 启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法、模拟退火法、神经网络等。 \( 阅读全文
摘要:
树的重心 定义 树上一节点,且满足它的最大子树的节点数最小。 性质 \(ps.\) 性质网上都有,但是没有一篇博客进行了证明。此后的儿子节点指重心与子树相连的节点。 $1.\(删除重心后所得的所有子树,节点数不超过原树的\)\frac{1}{2}$,一棵树最多有 $2$ 个重心; 证明:这是树的重心 阅读全文
摘要:
树的直径 定义 树上的最长简单路。 做法 $1$ 首先我们先随意找定一个点 \(x\) ,然后 \(Dfs\) 求出 \(x\) 在全图中离他最远的节点 \(y\) 再在图中找到离 \(y\) 最远的节点 \(z\) 那么 \(yz\) 的简单路径就是树的直径。 证明 假设确定了直径的一个端点,那么 阅读全文