- 博客(6)
- 收藏
- 关注
原创 图论(基本概念)
本文概述了图论的基本概念:图由点集和边集构成,分为有向图和无向图;介绍了前驱/后继、边权、重边/自环、度等术语;解释了子图、完全图、连通图等图的性质;讨论了图的两种存储方式(邻接矩阵和邻接表);最后指出树是一种特殊的有向无环图。作者声明当前内容尚未包含网络流和Tarjan算法等高级概念。
2025-12-28 15:37:14
139
原创 背包模型(入门)
本文介绍了三种背包问题的动态规划解法:01背包、完全背包和多重背包。01背包通过二维状态转移方程求解,可优化为一维数组;完全背包在01背包基础上允许无限取用物品,状态转移方程略有不同;多重背包则将物品数量视为限制条件,可通过二进制优化降低复杂度。每种方法都给出了对应的代码实现,适用于不同范围的输入数据。
2025-12-28 15:28:12
627
原创 线性DP(入门)
本文介绍了四种线性动态规划经典问题:数字三角形、最长上升子序列、最长公共子序列和最长公共子串。数字三角形通过自底向上递推求路径最大值;最长上升子序列使用动态规划或二分优化求解;最长公共子序列通过二维状态转移方程计算;最长公共子串则要求连续匹配。每种问题都给出了基本思路和代码实现,涵盖从简单到进阶的解法,时间复杂度从O(n²)到O(nlogn)不等。这些模板题是动态规划入门的基础,掌握其解法对理解更复杂的DP问题至关重要。
2025-12-27 10:44:58
757
原创 数据结构(手写堆+STL+任意位置删除)
本文介绍了堆的基本概念与实现方法。堆是一种完全二叉树,分为小根堆和大根堆,可用一维数组存储。文章详细讲解了堆的核心操作:插入(push)、获取最小值(堆顶)、删除最小值(pop),以及辅助操作up和down的实现代码。同时对比了手写堆和STL中的priority_queue的使用方法,包括如何实现小根堆。最后还介绍了支持任意位置删除的高级堆实现,通过ph和hp数组维护插入顺序。文章提供了完整的C++代码示例,并推荐了相关练习题。
2025-12-27 10:27:03
188
原创 并查集基础(思路+简单实例)
本文介绍了并查集数据结构及其应用。并查集用于管理元素所属集合,支持合并和查找操作,通过路径压缩和按秩合并优化性能。文章提供了并查集的基本模板代码,包括初始化、查找(带路径压缩)和两种合并方式(无秩和按秩合并)。并以P1551亲戚问题为例,展示了如何使用并查集判断两个人是否具有亲戚关系,给出了完整实现代码。时间复杂度为O(α(n)),其中α为阿克曼函数。
2025-12-26 20:22:36
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅