合集-算法与数据结构

算法与数据结构 1 - 模拟
摘要:模拟 介绍 正如名称所说,模拟是信息学学生最早接触,也是难度跨度最大的知识点。简单如《A+B 问题》《校门外的树》开门见山,没有任何铺垫和掩饰;困难如《猪国杀》《乱西星上的空战》同样开门见山,但谁做谁头疼。 因此,本文选择了模拟作为《算法与数据结构》的第一章。 引入 正如名字所表示的,模拟的核心思想 阅读全文

posted @ 2024-11-25 22:33 cwkapn 阅读(260) 评论(0) 推荐(0)

算法与数据结构 2 - 二分
摘要:二分 介绍 二分是信息学中运用的较为广泛的一种思想。它的核心是每次操作去掉一半的错误答案,从而在 \(\text{log}_2n\)(在信息学中简称 \(\text{log}n\))的操作次数内查找到答案。 题外话:算法的复杂度 计算机也许足够快,但并非无限快。 ————《算法导论》 现代计算机的运 阅读全文

posted @ 2024-11-26 10:31 cwkapn 阅读(102) 评论(0) 推荐(0)

算法与数据结构 3 - 贪心
摘要:贪心 介绍 贪心思想名副其实:每一步操作都选取当前的局部最优解,从而使得全局最优。这个思想应用极其广泛,以至于生活中随处可见。因此,本文将介绍这一种思想以及它的应用场合。 先介绍一个名词: 最优子结构:问题能够被分为若干个小问题,而每个小问题独立。因此当每个小问题的解取到最优时,全局的解同时也就最优 阅读全文

posted @ 2025-03-25 23:12 cwkapn 阅读(60) 评论(0) 推荐(0)

算法与数据结构 4 - 主席树(可持久化权值线段树)
摘要:0. 主席树的名字 主席树和主席没有关系。 它之所以叫主席树,是因为它的发明者叫 HJT ,和时任这一职务的那个人一样。 1. 例题 静态查询数组 \(a\) 中 \([l, r]\) 第 \(k\) 大的值。 一种暴力的方法是:每次询问对区间进行排序。这样的时间复杂度是 \(O(mn \text{ 阅读全文

posted @ 2025-01-17 09:44 cwkapn 阅读(81) 评论(0) 推荐(0)

算法与数据结构 5 - FHQ Treap
摘要:FHQ-Treap 是什么 FHQ-Treap(也叫做「分裂—合并 Treap」) 是由范浩强发明的一种实现 Treap 的方法。 原理 FHQ-Treap 通过「分裂」、「合并」操作实现快速插入、删除、查找等操作。 节点 根据 Treap 的性质,可以这样定义节点,也可以根据具体题目进行调整: s 阅读全文

posted @ 2025-03-25 23:12 cwkapn 阅读(144) 评论(0) 推荐(0)

算法与数据结构 6 - 进阶一
摘要:前言 闻道于 GTYZ,说,作此篇。 目录 势能线段树 介绍 例题 01 Trie 介绍 变体一:可持久化 01 Trie 变体二:“满子树压缩” 01 Trie 例题 平衡树 FHQ-Treap 介绍 变体一:带标记的 Treap 变体二:可持久化 Treap 变体三:值域有交 Treap 例题 阅读全文

posted @ 2025-04-20 21:25 cwkapn 阅读(74) 评论(0) 推荐(0)

算法与数据结构 7 - 斜率优化
摘要:引入 斜率优化是一种优化动态规划时间复杂度的优化寄巧,能够极大降低算法的时间复杂度。 斜率优化的一般形式是: \[f_i=\min /\max \{ a_i \times b_j + c_i + d_j + C\} \]。 这种状态转移方程暴力计算显然是 \(\mathcal{O}(n^2)\) 的 阅读全文

posted @ 2025-04-24 19:11 cwkapn 阅读(171) 评论(0) 推荐(1)

算法与数据结构 7.5 - 李超线段树
摘要:目录 前言 由来 功能 用途 原理 理论 实现 前言 其实李超线段树应该属于斜率优化的一部分,因为这种数据结构常见用法似乎就是斜率优化。但因为不常见(一般是出题人懒得写),所以分到单独的一章。 由来 李超线段树是杭州学军中学的李超(IOI 2012 Au)发明的。 功能 要求在平面直角坐标系下维护两 阅读全文

posted @ 2025-07-25 20:58 cwkapn 阅读(58) 评论(0) 推荐(0)

算法与数据结构 8 - 线性筛求一般积性函数
摘要:引言 昨天和同学做 LOJ #124. 除数函数求和 1,推出了线性筛求一般积性函数的方法,现在写一写。 前置知识 积性函数:对任意互质整数 \(p,q\),\(f(p)\times f(q)=f(pq)\) 的函数。 完全积性函数:对任意整数 \(p,q\),\(f(p)\times f(q)=f 阅读全文

posted @ 2025-09-18 09:24 cwkapn 阅读(21) 评论(0) 推荐(0)

算法与数据结构 9 - 重链剖分
摘要:引言 尽管有些题会卡重链剖分,但它仍是一种强大的树上问题处理工具。 在许多资料中,『树链剖分』默认指重链剖分,因为它用得最多。本文明确区分『重链剖分』和『树链剖分』。 重链剖分 定义 本文中『树』默认为有根树。节点的『DFN 序』默认在 DFS 时优先遍历重边。 『重子节点』或『重儿子』是一个点所有 阅读全文

posted @ 2025-10-26 15:55 cwkapn 阅读(17) 评论(0) 推荐(0)