随笔分类 - 学习笔记/算法总结
摘要:upd at 2025.02.16 其实早就断更了。如果想了解更多详情,请前往 Zctf1088 的博客【学习笔记/算法总结】 upd at 2025.02.09 鉴于前段时间校 OJ 上的博客爆炸。为避免重大损失,搬迁至此。 板子 前言 是在我学斜率优化dp的时候,觉得需要一些模板。纯粹就是按写入
阅读全文
摘要:线段树 概述 线段树是一种非常【数据删除】的数据结构。 后略 基本操作 建树 略 单点修改 略 区间求和 略 单点查询 略 区间修改 lazy 标记 略 代码 略 其他操作 区间最值/区间乘 略 【数据删除】操作 一般这种线段树会有一个非常【数据删除】的 pushup。比如说,最基础的,维护区间最大
阅读全文
摘要:Kurskal 重构树 定义 Kurskal 重构树就是在跑 Kurskal 的时候处理出一棵树,这棵树会有一些奇妙的性质。 考虑如何构建。 首先新建 个集合,每个集合前有一个节点,点权为 。 每一次加边会合并两个集合,我们就可以新建一个点,点权为加入边的边权,同时将两个集合的
阅读全文
摘要:笛卡尔树 定义 笛卡尔树就是一种二叉树。笛卡尔树的每一个节点由一个二元组 构成。要求 满足二叉搜索树[1]的性质, 满足堆[2]的性质。当 的值随机时,这就是一颗 Treap。 Treap 和笛卡尔树 Treap 是笛卡尔树中的一种,只不过 Tr
阅读全文
摘要:折半搜索(Meet in the Middle) 思想 先搜索前一半的状态,再搜索后一半的状态,再记录两边状态相结合的答案。 一般暴力搜索的时间复杂度是 级别的,但是折半搜索可以将时间复杂度降到 。 例题 拿题说事儿
阅读全文
摘要:斜率优化DP 例题 HNOI2008 玩具装箱 朴素dp 设 表示前 个物品,分若干段的最小代价。 状态转移方程为: \[dp_{i}=\min _{j<i}\left\{dp_{j}+\left(i-(j+1)+s_{i}-s_{j}-L\right)^{2}\rig
阅读全文
摘要:
sort 函数排序不具有稳定性。 不开 long long 见祖宗。 特殊情况下,开了 #define int long long 见祖宗。 memset 见祖宗。 大量输入建议使用快读。 线段树维护区间最小值区间覆盖 lazy 的初始值要赋成 INF。 在满足 \(n\ \&\
阅读全文

摘要:平衡树 对于二叉搜索树[1]而言,常见的平衡性定义是指:以 T 为根的树,每一个左子树和右子树的高度差最多为 1。 Treap 概述 Treap 是一弱平衡的二叉搜索树。他同时符合二叉搜索树和堆[2]的性质,名字也因此为 tree(树) 和 heap(堆)的结合。 一般情况下,我们会赋予一个节点两个
阅读全文
摘要:为什么我要把他俩放一起写呢?俩随机化算法常常一起用,简直是天生一对儿。 Miller Rabin 算法 定义 Miller-Rabin 素性测试[1]是进阶的素数判定方法。 实现 二次探测定理 如果 是奇素数,则 的解为 \(x \equ
阅读全文
摘要:AC 自动机 前言 我觉得AC自动机这种东西非常抽象,有必要写一篇博客来整理一下,以加深理解。 概况 AC自动机是以 Trie 树的结构为基础,结合 KMP 思想建立的自动机,用于解决多模式串匹配等任务。 一般来说,建立一个AC自动机有两个步骤: 把所有的模式串建成一颗 Trie 树。 用 KMP
阅读全文