随笔分类 -  学习笔记/算法总结

1
摘要:CDQ 分治 概述 CDQ 分治是一种分治算法。 通常的分治算法通常是形如 \(f(l,r)\) 分治到 \(f(l,mid)\) 和 \(f(mid+1,r)\),然后再进行合并。此处的合并一般是具有可加性的。 但是对于一些问题,他的合并就是需要做一半向有一半做贡献。我们把这种分治算法就叫做 CD 阅读全文
posted @ 2025-12-10 20:05 Zctf1088 阅读(12) 评论(0) 推荐(1)
摘要:虚树 概念 对于一棵树,我们把这棵树上的一些点拿出来,那么这个点集的虚树就是这些点及其在原树上的 lca 所组成的点集连边所构成的树。举个例子: 建树 考虑用单调栈建树。下文称需要建虚树的这个点集为关键点。 在此之前,我们先将所有关键点按 dfs 序排序。 考虑用单调栈维护虚树上的一条链。首先将第一 阅读全文
posted @ 2025-10-13 20:55 Zctf1088 阅读(34) 评论(0) 推荐(1)
摘要:主席树 这个也叫可持久化线段树。 基本思想 所谓可持久化,就是可以保留每一个历史版本。对于线段树而言,可持久化就意味着可以保留多个历史版本的线段树。 首先,直接储存 \(n\) 棵线段树显然会爆空间。 我们考虑当我们进行一次单点修改的时候,会收到影响的节点只有原树上的一条根链会收到影响。也就是说,我 阅读全文
posted @ 2025-08-13 21:00 Zctf1088 阅读(14) 评论(0) 推荐(1)
摘要:wqs二分 本来是想写到杂项里的,但是觉得这个东西真的好牛逼,予以尊重,放到这里。 简介 wqs 二分是王钦石提出的一类二分方式。 基本是用来处理一类带有限制的问题的。比较明显的标志就是“恰好选 \(k\) 个”。 使用 wqs二分有一个前提,就是原问题必须具有凹凸性。 具体处理 比方说我们设 \( 阅读全文
posted @ 2025-08-10 20:12 Zctf1088 阅读(40) 评论(0) 推荐(1)
摘要:点分治 概念 点分治是树分治的一种,主要用于解决树上路径问题。 实现 贴上例题: P3806 【模板】点分治 1 给定一棵有 \(n\) 个点的树,询问树上距离为 \(k\) 的点对是否存在。 考虑对于树上的所有路径,可以分为两类: 经过当前根节点的。 不经过当前根节点的。 对于第一种情况,我们直接 阅读全文
posted @ 2025-08-08 08:04 Zctf1088 阅读(15) 评论(0) 推荐(1)
摘要:2-SAT 还没学,改题时简单学了下,先咕着。 先暂时挂个板子。 #include <bits/stdc++.h> #define il inline using namespace std; il int read() { int x = 0; char ch = getchar(); bool 阅读全文
posted @ 2025-07-22 17:32 Zctf1088 阅读(11) 评论(0) 推荐(1)
摘要:神秘优化 IOS 优化 cin cout 把这两行加到 main() 中开头处即可。 ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); 快读快写 贴上代码。把 read() 和 write 单独抠出来就是朴素的版本。 namespace IO { c 阅读全文
posted @ 2025-07-15 16:21 Zctf1088 阅读(13) 评论(0) 推荐(1)
摘要:基环树 概念 基环树就是一棵树上多出一条边。也就是说,有 \(N\) 个点 \(N\) 条边的连通图叫做基环树。 对于有向图和无向图,分为有向基环树和无向基环树。有向基环树又分为内向基环树(每个节点以自己为起点的边只有一条)和外向基环树(每个节点以自己为终点的边只有一条)。 无向基环树: 内向基环树 阅读全文
posted @ 2025-04-17 17:23 Zctf1088 阅读(43) 评论(0) 推荐(0)
摘要:扫描线 引入 扫描线一般运用在图形上面,它和它的字面意思十分相似,就是在一整个图上面扫来扫去。最经典的还是二维矩形面积并问题。 二维矩形面积并 P5490 【模板】扫描线 & 矩形面积并 在二维平面上给出若干个矩形,求所有矩形构成的图形的并。 过程 先放一张不要钱捡来的图片。 懂了吧?是不是很简单? 阅读全文
posted @ 2025-03-16 17:41 Zctf1088 阅读(18) 评论(0) 推荐(0)
摘要:板子“至尊高坐天中,四海皆在目下。”——神鲁肃。右边这幅图正是神鲁肃。九州为局,天下之势尽在此处。这篇文章《板子》我认为还是很棒的。还是涵盖了很多内容的。 阅读全文
posted @ 2025-03-09 15:57 Zctf1088 阅读(59) 评论(1) 推荐(0)
摘要:线段树 概述 线段树是一种非常【数据删除】的数据结构。 后略 基本操作 建树 略 单点修改 略 区间求和 略 单点查询 略 区间修改 lazy 标记 略 代码 略 其他操作 区间最值/区间乘 略 【数据删除】操作 一般这种线段树会有一个非常【数据删除】的 pushup。比如说,最基础的,维护区间最大 阅读全文
posted @ 2025-02-16 17:28 Zctf1088 阅读(33) 评论(0) 推荐(0)
摘要:Kurskal 重构树 定义 Kurskal 重构树就是在跑 Kurskal 的时候处理出一棵树,这棵树会有一些奇妙的性质。 考虑如何构建。 首先新建 \(n\) 个集合,每个集合前有一个节点,点权为 \(0\)。 每一次加边会合并两个集合,我们就可以新建一个点,点权为加入边的边权,同时将两个集合的 阅读全文
posted @ 2025-02-06 11:37 Zctf1088 阅读(30) 评论(0) 推荐(0)
摘要:笛卡尔树 定义 笛卡尔树就是一种二叉树。笛卡尔树的每一个节点由一个二元组 \((k,w)\) 构成。要求 \(k\) 满足二叉搜索树[1]的性质,\(w\) 满足堆[2]的性质。当 \(w\) 的值随机时,这就是一颗 Treap。 Treap 和笛卡尔树 Treap 是笛卡尔树中的一种,只不过 Tr 阅读全文
posted @ 2025-02-06 09:16 Zctf1088 阅读(53) 评论(0) 推荐(0)
摘要:折半搜索(Meet in the Middle) 思想 先搜索前一半的状态,再搜索后一半的状态,再记录两边状态相结合的答案。 一般暴力搜索的时间复杂度是 \(O(2^n)\) 级别的,但是折半搜索可以将时间复杂度降到 \(O(2 \times 2^{\frac{n}{2}})\)。 例题 拿题说事儿 阅读全文
posted @ 2025-01-17 16:26 Zctf1088 阅读(50) 评论(0) 推荐(0)
摘要:斜率优化DP 例题 HNOI2008 玩具装箱 朴素dp 设 \(dp_i\) 表示前 \(i\) 个物品,分若干段的最小代价。 状态转移方程为: \[dp_{i}=\min _{j<i}\left\{dp_{j}+\left(i-(j+1)+s_{i}-s_{j}-L\right)^{2}\rig 阅读全文
posted @ 2025-01-17 15:40 Zctf1088 阅读(87) 评论(0) 推荐(1)
摘要:警钟长鸣右图是杨彪。 写一些这个警钟是十分必要的。这个不仅是一些做题技巧,而且是一些一定不能再错的东西。细节性问题,一定要注意。 阅读全文
posted @ 2024-11-10 17:01 Zctf1088 阅读(72) 评论(0) 推荐(1)
摘要:二分图 概念 假设 \(G=(V,E)\) 是一个无向图,若点集 \(V\) 可以分解成互不相交的子集 \((A,B)\),并且图中所有边 \((i,j)\) 的端点 \(i\)、\(j\) 分别属于子集 \(A\)、\(B\),则称 \(G\) 是一个二分图。 判断 一张无向图时二分图,当且仅当图 阅读全文
posted @ 2024-10-23 20:59 Zctf1088 阅读(67) 评论(0) 推荐(0)
摘要:平衡树 对于二叉搜索树[1]而言,常见的平衡性定义是指:以 T 为根的树,每一个左子树和右子树的高度差最多为 1。 Treap 概述 Treap 是一弱平衡的二叉搜索树。他同时符合二叉搜索树和堆[2]的性质,名字也因此为 tree(树) 和 heap(堆)的结合。 一般情况下,我们会赋予一个节点两个 阅读全文
posted @ 2024-09-02 20:48 Zctf1088 阅读(68) 评论(0) 推荐(0)
摘要:为什么我要把他俩放一起写呢?俩随机化算法常常一起用,简直是天生一对儿。 Miller Rabin 算法 定义 Miller-Rabin 素性测试[1]是进阶的素数判定方法。 实现 二次探测定理 如果 \(p\) 是奇素数,则 \(x^2 \equiv 1 \pmod p\) 的解为 \(x \equ 阅读全文
posted @ 2024-08-23 20:08 Zctf1088 阅读(68) 评论(0) 推荐(0)
摘要:AC 自动机 前言 我觉得AC自动机这种东西非常抽象,有必要写一篇博客来整理一下,以加深理解。 概况 AC自动机是以 Trie 树的结构为基础,结合 KMP 思想建立的自动机,用于解决多模式串匹配等任务。 一般来说,建立一个AC自动机有两个步骤: 把所有的模式串建成一颗 Trie 树。 用 KMP 阅读全文
posted @ 2024-08-18 17:07 Zctf1088 阅读(92) 评论(0) 推荐(0)

1