logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

图论基础:DFS、BFS、并查集与拓扑排序的C++实现

本文介绍了图论中四种基础算法的C++实现:DFS(深度优先搜索)、BFS(广度优先搜索)、并查集和拓扑排序。使用邻接表表示图,通过vector和list实现。DFS采用非递归栈实现(O(V+E)时间),BFS使用队列实现,适用于最短路径等场景。并查集采用路径压缩和按秩合并优化,用于连通性检测。拓扑排序对有向无环图进行线性排序,可用于任务调度。文末提供了完整测试示例,展示了各算法的实际应用和输出结果

#深度优先#算法#图论
区间动态规划详解

区间DP的核心状态定义为:dp[i][j]:表示序列/区间[i, j]上的最优解(或某种状态)通过枚举区间内的划分点k,将大区间[i, j]拆分成两个子区间[i, k]和[k+1, j]// 通常使用二维dp数组// dp[i][j] 表示区间[i, j]的答案破环成链:解决环形区间问题前缀和优化:快速计算区间和记忆化搜索:替代迭代DP(代码更简洁)k < j;++k)状态压缩:当区间长度较小时用

#动态规划#代理模式#算法
树形动态规划详解

本文系统介绍了树形动态规划(Tree DP)的核心原理、经典模型和高级技巧,并提供了C++实现模板。主要内容包括:1)树形DP的基本概念和解题步骤;2)通用框架与状态设计模板;3)三大经典问题实现(最大独立集、最小点覆盖、最小支配集);4)进阶模型(树上背包、树直径、树重心);5)换根DP等高级技巧。通过20+经典问题解析,帮助读者掌握在树形结构上应用动态规划的方法,实现从基础到实战的进阶。

#动态规划#深度优先#算法
数位动态规划详解

数位动态规划(Digit DP)是一种高效解决数字位相关计数问题的算法,尤其适用于统计大区间内满足特定条件的数字数量。本文系统介绍了数位DP的核心思想、状态设计和C++实现模板,包含20+经典问题解析。数位DP通过数字分解、状态压缩和记忆化搜索,在数字的每一位上进行状态转移,同时处理数字限制条件。文章详细讲解了通用模板框架、关键参数解析、四大核心函数,以及如何处理不含特定数字、数字和、数字乘积等问

#动态规划#算法
线性动态规划(DP)与前缀和优化

通过前缀和优化,可以显著提升线性DP的效率,将原本的O(n²)复杂度降低到O(n)。在实际应用中,需根据具体问题设计合适的状态定义和前缀和数组,确保优化的有效性。

#动态规划#算法#c++
红黑树详解及C++实现

本文介绍了C++红黑树的实现及其高效操作。红黑树通过自平衡特性确保查找、插入和删除操作的时间复杂度为O(log n)。文章详细讲解了红黑树的五大规则、节点结构、旋转操作(左旋/右旋)以及插入流程。通过哨兵节点简化边界处理,插入操作后使用颜色调整和旋转维护平衡。代码实现展示了节点类、树结构、旋转逻辑和插入修复机制,为键值对存储提供了高效解决方案。

#c++
贪心算法详解及Java实现

贪心算法是一种简单高效的算法设计范式,适用于具有贪心选择性质的问题。虽然它不能解决所有优化问题,但在适用场景下能提供高效的解决方案。理解贪心算法的原理和实现方式,对于解决实际编程问题具有重要意义。在Java中实现贪心算法时,可以利用Collections.sort()或Arrays.sort()进行排序,结合适当的比较器来制定贪心策略。通过练习经典贪心问题,可以更好地掌握这一算法思想。关键点总结贪

#java#贪心算法
二维差分详解

学习路径掌握一维差分 → 2. 理解二维前缀和 → 3. 推导差分公式 → 4. 实现基础操作核心口诀“差分更新四步走,左上加k右下补,同行右侧需消减,同列下侧要消除”关键点:差分是离线算法,适用于"先批量更新,最后查询"的场景。对实时查询需求,需结合树状数组等数据结构。通过二维差分,我们以O(1)时间完成区域更新,用空间换时间的经典范例。理解其数学本质(容斥原理),即可灵活扩展到更高维度或变种问

#算法#数据结构#c++
到底了