ACM
文章平均质量分 90
MHZBoy
生活在每一个独立的今天
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【树形数据结构】李超线段树 (Li-Chao Tree)
李超线段树通过在每个区间维护中点最优线段,支持高效动态插入线段与单点最值查询,结合离散化可处理大坐标范围,常用于斜率优化等场景。原创 2025-08-30 16:25:15 · 1137 阅读 · 0 评论 -
【多项式】快速沃尔什变换 (FWT)
快速沃尔什变换(FWT)是一种高效计算按位运算卷积的算法,适用于异或、与、或三种运算。其核心思想是通过线性变换将卷积转化为逐点乘积,类似FFT处理加法卷积的方式。FWT采用分治策略,对序列进行变换和逆变换,其中异或卷积最复杂,需使用Walsh-Hadamard变换。三种运算分别对应不同的变换矩阵和分治方法,并可通过C++实现高效计算。FWT在组合数学、算法竞赛等领域有重要应用。原创 2025-08-30 19:30:00 · 1386 阅读 · 0 评论 -
【多项式】快速莫比乌斯变换(FMT)
FMT通过按集合大小分层并进行子集和变换,将子集卷积从O(3^n)优化至O(n²2^n),高效处理集合不相交合并问题。原创 2025-08-30 15:09:47 · 1270 阅读 · 0 评论 -
【图论】分层图
分层图通过将状态拆解为多层结构,利用层内/层间边建模状态转移,结合最短路径算法(如Dijkstra)解决复杂问题,适用于有限次决策或状态依赖场景,如飞行路线优化与时间余数分层问题。原创 2025-08-30 02:06:35 · 1043 阅读 · 0 评论 -
【树论】树上启发式合并
树上启发式合并(DSU on Tree)通过保留重儿子信息、合并轻儿子,高效处理子树查询,时间复杂度 $O(n \log n)$,适用于离线统计问题。原创 2025-08-29 23:59:50 · 1144 阅读 · 0 评论 -
【数论】扩展欧几里德算法
扩展欧几里德算法在求最大公约数的同时,求解ax+by=gcd(a,b)的整数解,是求模逆元、解线性同余方程的基础,时间复杂度O(log n)。原创 2025-08-28 23:33:00 · 844 阅读 · 0 评论 -
【多项式】快速傅里叶变换(FFT)
FFT通过分治法将DFT的O(N²)复杂度降至O(N log N),核心是蝶形运算与位逆序重排,广泛应用于信号处理、多项式乘法等领域。原创 2025-08-28 22:56:58 · 1861 阅读 · 0 评论 -
【线性数据结构】颜色段均摊(珂朵莉树 ODT)
珂朵莉树利用区间赋值次数少的特性,将序列划分为连续同值段,通过分裂与合并操作,均摊处理复杂区间查询,适用于非线性操作。原创 2025-08-28 10:31:40 · 1156 阅读 · 0 评论 -
【线性数据结构】差分
差分通过构建差值数组,将区间修改转化为单点操作,实现O(1)更新与O(n)还原,常用于高效处理批量区间增减问题。原创 2025-08-27 23:20:31 · 2560 阅读 · 0 评论 -
【树论】树的重心
树的重心是使最大子树最小的节点,最多两个且相邻。通过DFS计算子树大小,考虑父方向分量,O(n)求解,用于树分治等。原创 2025-08-26 23:30:00 · 967 阅读 · 0 评论 -
【群论】群论入门
群论研究满足封闭、结合、单位元、逆元的代数结构。C++可实现群的公理验证、阶计算与乘法表,应用于密码学、组合计数等领域。原创 2025-08-26 19:01:49 · 2768 阅读 · 0 评论 -
【树论】树链剖分
树链剖分通过重轻链划分,将树路径拆为O(log n)段重链,结合线段树实现路径/子树的高效修改与查询,核心为两次DFS与跳链技术。原创 2025-08-26 23:00:00 · 976 阅读 · 0 评论 -
【树论】最近公共祖先(LCA)
LCA(最近公共祖先)用于求树中两节点的 deepest 共同祖先。常用倍增法,预处理 O(n log n),查询 O(log n),核心是二进制跳跃与深度调整。原创 2025-08-26 18:39:08 · 1523 阅读 · 0 评论 -
【图论】SPFA 算法
SPFA是Bellman-Ford的队列优化版,可处理负权边并检测负权环,平均性能好,但最坏复杂度O(VE)且易被卡,适用于无负权环的单源最短路径问题。原创 2025-08-26 00:25:38 · 1287 阅读 · 0 评论 -
【图论】Dijkstra 算法
Dijkstra算法求单源最短路径,基于贪心策略,使用优先队列优化,时间复杂度O((V+E)logV),要求边权非负,是图论中最基础高效的最短路径算法之一。原创 2025-08-25 23:57:24 · 3181 阅读 · 0 评论 -
【图论】Floyd-Warshall 算法
Floyd算法是求解所有顶点对最短路径的动态规划算法,可处理负权边,复杂度O(V³),适用于顶点较少的图。原创 2025-08-25 23:36:57 · 1323 阅读 · 0 评论 -
【博弈论】经典博弈论问题
博弈论研究策略互动,核心有纳什均衡。C++可实现囚徒困境、Nim游戏(用异或)和极小化极大算法,用于分析决策与求解对抗性博弈。原创 2025-08-24 18:26:22 · 1504 阅读 · 0 评论 -
【图论】差分约束
差分约束将不等式组转化为图论最短路径问题,通过SPFA等算法求解,可判断解的存在性并求最值,广泛应用于调度、优化等领域。原创 2025-08-24 11:15:04 · 789 阅读 · 0 评论 -
【数论】莫比乌斯反演
莫比乌斯反演是数论重要工具,通过莫比乌斯函数实现求和变换,常用于GCD计数等问题,结合线性筛与数论分块可高效求解。原创 2025-08-23 21:31:48 · 1226 阅读 · 0 评论 -
【技巧】莫队算法
莫队算法通过分块排序查询,离线处理区间统计问题。利用指针移动增量更新答案,适用于可加减的查询,如区间不同数个数,时间复杂度O((n+q)√n)。原创 2025-08-23 19:24:37 · 1669 阅读 · 0 评论 -
【动态规划】状压DP
状压DP用二进制压缩状态,结合位运算高效处理组合问题,适用于n较小的集合选择类动态规划,如TSP、棋盘覆盖等。原创 2025-08-23 14:32:52 · 1458 阅读 · 0 评论 -
【动态规划】树形DP
树形DP是在树上进行的动态规划,通过DFS后序遍历,定义节点状态并由子节点转移而来,常用于求解树的最大独立集、重心、直径等问题。原创 2025-08-22 21:39:51 · 1167 阅读 · 0 评论 -
【动态规划】区间DP
区间DP按区间长度递推,枚举分割点合并子问题,常用于石子合并、回文分割等最优化问题,核心是状态定义与转移方程。原创 2025-08-22 20:23:44 · 1501 阅读 · 0 评论 -
【动态规划】背包DP
背包DP核心:在容量限制下选物以最大化价值。含01、完全、多重、分组四类,关键在状态定义与循环方向,常考空间优化。原创 2025-08-21 19:50:37 · 1010 阅读 · 0 评论 -
【字符串】后缀树(Suffix Tree)
后缀树是压缩字典树,含字符串所有后缀。Ukkonen算法以O(n)时间构建,利用后缀链接与三规则高效扩展,是处理子串搜索、重复子串等难题的利器。原创 2025-08-21 04:45:12 · 1436 阅读 · 0 评论 -
【字符串】Manacher 算法
Manacher算法通过预处理统一回文奇偶性,并利用对称性在线性时间内高效求解最长回文子串。原创 2025-08-21 03:49:44 · 853 阅读 · 0 评论 -
【字符串】AC自动机
AC自动机结合Trie树与KMP思想,通过失败指针实现多模式串高效匹配,时间复杂度O(n+m+z),广泛应用于敏感词过滤、生物信息学等领域。原创 2025-08-20 17:48:52 · 934 阅读 · 0 评论 -
【字符串】字典树 (Trie)
字典树(Trie)是一种高效处理字符串的树形数据结构,利用前缀共享实现快速插入、搜索和自动补全,广泛应用于词典、搜索提示和拼写检查等场景。原创 2025-08-20 01:32:21 · 1080 阅读 · 0 评论 -
【字符串】KMP 算法
KMP算法通过预处理模式串构建LPS数组,利用最长相等前后缀信息避免主串回溯,实现O(n+m)高效字符串匹配。原创 2025-08-20 00:59:05 · 703 阅读 · 0 评论 -
【图论】上下界网络流算法
上下界网络流详解:涵盖无源汇/有源汇可行流、最大/最小流算法原理,提供完整C++实现,深入解析转化思想与应用。原创 2025-08-19 20:38:08 · 1239 阅读 · 0 评论 -
【搜索】Dancing Links算法
Dancing Links是求解精确覆盖问题的高效算法,利用双向链表实现快速回溯,通过覆盖/取消覆盖操作优雅地搜索解空间。原创 2025-08-19 15:44:35 · 452 阅读 · 0 评论 -
【搜索】启发式迭代加深搜索(IDA*)
IDA*结合A*启发式与迭代加深,用f值限制深度优先搜索,逐步增加阈值,兼具最优性与低内存消耗,适合大状态空间的最优路径搜索。原创 2025-08-19 14:50:12 · 1338 阅读 · 0 评论 -
【优化】遗传算法
遗传算法模拟生物进化,通过选择、交叉、变异操作迭代优化,适用于复杂问题求解,具有全局搜索能力强、鲁棒性高等优点。原创 2025-08-19 09:54:35 · 1460 阅读 · 0 评论 -
【搜索】退火模拟算法
模拟退火模拟物理退火过程,用Metropolis准则接受劣解以跳出局部最优,通过降温迭代搜索全局最优,适用于复杂优化问题。原创 2025-08-19 06:18:59 · 639 阅读 · 0 评论 -
【搜索】爬山算法
爬山算法是局部搜索,通过迭代选择更优邻域解寻找局部最优,易实现但易陷局部最优,常用于优化问题。原创 2025-08-19 05:48:48 · 2321 阅读 · 0 评论 -
【图论】Tarjan算法
Tarjan算法基于DFS,通过维护dfn和low值,高效求解有向图的强连通分量,时间复杂度O(V+E),是图论中的经典算法。原创 2025-08-18 23:33:51 · 631 阅读 · 0 评论 -
【图论】Kruskal 重构树
Kruskal重构树通过将边权转为点权构建,解决路径边权最值问题。C++实现包括构建树、LCA预处理及查询,适用于瓶颈路径问题,时间复杂度低。原创 2025-08-18 17:58:21 · 1529 阅读 · 0 评论 -
【图论】拓扑排序
拓扑排序用于有向无环图,确保每个节点在依赖它的节点之前被访问。通过 Kahn 算法或 DFS 实现,适用于任务调度等场景,时间复杂度为 O(V+E)。原创 2025-08-18 00:26:50 · 1173 阅读 · 0 评论 -
【数据结构】动态树 LCT
LCT是维护动态树的数据结构,通过偏好路径和Splay树实现,支持均摊O(log n)的连接、切断和路径查询操作。原创 2025-08-17 18:52:34 · 1199 阅读 · 0 评论 -
【数据结构】并查集(Union-Find)
并查集是管理集合合并与查询的高效数据结构,通过路径压缩和按秩合并优化,实现接近常数时间的合并与查询操作,广泛用于连通性问题。原创 2025-08-17 14:48:57 · 842 阅读 · 0 评论
分享