
c++算法模版
文章平均质量分 72
c++算法模版
wangyuxuan1029
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++树状数组模板Fenwick (Binary Indexed) Trees
树状数组(Fenwick Tree)是一种高效处理前缀和查询与单点更新的数据结构,时间复杂度为O(log n)。其核心思想是利用二进制分组(lowbit操作)快速定位区间,相比线段树实现更简单(仅需8-10行代码),空间占用更少。支持两种核心操作:单点更新(通过父节点链式修改)和前缀和查询(通过子节点递减累加)。典型应用包括动态前缀和、逆序数统计和元素排名维护。虽然不支持直接区间查询,但通过差分思想可扩展,在竞赛编程中因其简洁高效而广受欢迎。原创 2025-05-25 19:04:27 · 893 阅读 · 0 评论 -
c++线段树之单点修改区间最大子段和-----P4513 小白逛公园
本文介绍了如何使用线段树解决单点修改和查询区间最大子段和的问题。线段树的每个节点存储了四个值:区间总和、最大前缀和、最大后缀和以及最大子段和。通过合并左右子节点的信息,可以维护当前节点的这些值。具体实现包括构建线段树、更新节点值以及查询区间最大子段和。代码展示了如何通过递归和合并操作来实现这些功能,最终能够高效地处理单点修改和区间查询。原创 2025-05-18 14:12:31 · 236 阅读 · 0 评论 -
洛谷P3373线段树详解【模板】
洛谷P3373是一道关于线段树的模板题,题目名称为“【模板】线段树 2”。题目的主要要求是对一个长度为n将某区间每个数乘上一个数。将某区间每个数加上一个数。求出某区间所有数的和。线段树是一种二叉树数据结构,常用于高效处理区间查询和更新操作。它可以将一个区间划分为多个子区间,每个节点代表一个区间,通过维护这些节点的信息,可以在OlognO(\log n)Ologn的时间复杂度内完成区间查询和更新操作。400002221和分别引入输入输出流和数学库。原创 2025-04-19 22:17:07 · 904 阅读 · 0 评论 -
c++线段树模板理顺覆盖和加法之间逻辑
线段树在处理区间覆盖(set)和区间加法(add)时,需要明确两者的优先级及标记传递逻辑。此模板正确处理了覆盖与加法操作的优先级及合并,适用于多种区间修改与查询场景。原创 2025-04-13 14:23:17 · 785 阅读 · 0 评论 -
C++线段树详解与实现技巧
400002// 4倍原始数据大小// 线段树节点值(区间和)// 懒惰标记(区间增量)为何需要4倍空间?线段树层数为,4倍空间确保完全二叉树的构建。线段树核心:通过完全二叉树分割区间,利用懒惰标记优化更新。关键技巧正确计算左右子节点的区间长度。在访问子节点前下传懒惰标记。数据扩展至2的幂次,简化索引计算。通过理解上述实现细节,可以高效解决各类动态区间统计问题!原创 2025-04-12 18:37:57 · 94 阅读 · 0 评论 -
c++图论(六)之字典序最小欧拉路
对于无向图,检查所有顶点的度数。若存在0个奇数度数的顶点,则为欧拉回路;若存在2个奇数度数的顶点,则为欧拉路径,否则不存在。原创 2025-03-23 15:54:15 · 344 阅读 · 0 评论 -
c++图论(五)之判断图连通
这段 C++ 代码的主要功能是判断给定的图是否存在欧拉路径或欧拉回路。欧拉路径是指在图中经过每条边恰好一次的路径,而欧拉回路是指起点和终点相同的欧拉路径。下面是对代码各部分的详细解释:原创 2025-03-23 15:45:20 · 343 阅读 · 0 评论 -
c++二分查找模板
在C++中,**二分查找(Binary Search)** 是一种针对**有序数组/容器**的高效搜索算法,时间复杂度为 **O(log n)**。其核心思想是通过不断缩小搜索范围,将目标值与中间元素比较,从而快速定位元素位置。以下是详细实现和注意事项:原创 2025-03-23 15:33:40 · 190 阅读 · 0 评论 -
c++图论(四)之有向无环图特的拓扑排序
在 C++ 中实现有向无环图(DAG,Directed Acyclic Graph)的拓扑排序,可以通过两种经典方法:**BFS遍历法**和 **DFS 后序遍历**。以下是两种方法的实现原理、代码示例及详细说明:原创 2025-03-16 14:28:49 · 451 阅读 · 0 评论 -
c++图论(三)之图的遍历
在 C++ 中实现图的遍历主要有两种经典算法:**深度优先搜索(DFS)** 和 **广度优先搜索(BFS)**。以下是两种遍历方法的实现原理、代码示例及对比分析:原创 2025-03-16 14:09:20 · 585 阅读 · 0 评论 -
c++图论(二)之图的存储图解
在 C++ 中实现图的存储时,常用的方法包括。:大多数情况下优先使用。实现带权图的高效存储。原创 2025-03-16 13:14:03 · 1071 阅读 · 0 评论 -
c++排序算法大全
在 C++ 中,排序算法可以通过标准库函数(如 std::sort)实现,也可以手动实现经典算法。以下是常见排序方法及其示例:原创 2025-03-16 10:34:20 · 171 阅读 · 0 评论 -
c++反向 ST 表模板
*ST 表(Sparse Table,稀疏表)**是一种用于高效处理区间最值查询(RMQ,Range Minimum/Maximum Query)问题的数据结构。常规的 ST 表通常是预先处理出所有以某个位置为起点,长度为2k2^k2k的区间的最值,查询时通过拼接两个重叠的2k2^k2k长度的区间来得到任意区间的最值。而反向 ST 表与常规 ST 表不同,它存储的是以某个位置为终点,长度为2k2^k2k的区间的最值。在这个代码中,st[i][j]表示区间ii−2j1i。原创 2025-03-09 12:29:51 · 657 阅读 · 0 评论 -
种子填充(Floodfill、泛滥填充、洪水填充) 算法c++模板
种子填充(Floodfill) 算法: 从任意 W 开始,不停地把邻接的 W 用 . 代替。1 次 DFS 后与初始 W 连接的所有 W 都被替换成 . 了。因此,直到图中不存在 W 为止,总共进行 DFS 的次数就是答案了。原创 2025-03-09 12:11:59 · 84 阅读 · 0 评论 -
C++稀疏表(Sparse Table,ST表)区间最小值/最大值查询 模板
稀疏表(Sparse Table,ST 表)作为一种经典的数据结构,凭借其O (n log n) 的预处理时间复杂度和O (1) 的单次查询时间复杂度,成为解决这类问题的理想选择。原创 2025-03-08 18:29:52 · 356 阅读 · 0 评论 -
c++倍增概念
倍增是一种非常实用的算法思想,在很多数据结构和算法中都有广泛应用,比如稀疏表(Sparse Table,ST 表)、最近公共祖先(LCA)问题等。下面从基本概念、核心思想、应用场景等方面详细介绍倍增概念。原创 2025-03-08 18:23:43 · 235 阅读 · 0 评论 -
C++双指针法(尺取法)原理及模板代码与例题
尺取法是一种高效的区间处理技巧,常用于解决连续子区间/子数组/子字符串问题。其核心是通过两个指针(左、右边界)动态调整窗口范围,结合条件判断快速找到满足要求的区间,时间复杂度通常为 O(n)。原创 2025-03-02 15:35:22 · 252 阅读 · 0 评论 -
单调栈STL解决左(右)侧首个大(小于)于其的元素 C++模板
单调栈STL解决左(右)侧首个大(小于)于其的元素 C++模板。长度为 n 的整数序列 a1 … an ,输出每个元素左(右)侧==首个==大(小于)于其的元素下标;没有则输出 0。原创 2025-03-01 19:36:36 · 560 阅读 · 0 评论 -
最短路径问题( 贝尔曼-福特算法 SPFA算法)
最短路径问题( 贝尔曼-福特算法 SPFA算法 迪杰斯特拉算法 弗洛伊德-华沙算法时间复杂度对比)原创 2025-01-04 19:29:33 · 561 阅读 · 0 评论 -
c++滑动窗口与单调队列
c++滑动窗口与单调队列,单调队列代码模板,STL,手写,优先队列原创 2025-02-22 16:17:09 · 1112 阅读 · 0 评论 -
模板:将m个同样的球,放到n个同样的盘子里,求不同放法数量
模板:将m个同样的球,放到n个同样的盘子里,求不同放法数量原创 2025-02-22 15:20:53 · 159 阅读 · 0 评论