扩展讲解

竞赛向1. 宏定义(#define)宏定义是 C++ 的预处理指令,用于在编译前进行文本替换,能简化重复代码、提升编写速度。 1.1 常用宏123456789101112131415161718192021#include <iostream&...

二进制

算法竞赛二进制位运算 学习讲义 一、二进制与位运算的核心价值二进制是计算机的底层数据表示形式,位运算是直接对二进制位(0/1)执行的底层操作。在算法竞赛中,位运算有不可替代的核心优势: 极致性能:位运算直接由CPU硬件支持,单条指令即可完...

进制相关

bitset

C++ bitset一、bitset 的本质与核心优势1.1 本质bitset 是 C++ 标准库中一个固定大小的二进制位容器,它将数据存储为连续的二进制位(0或1),本质上是对“位运算”的高级封装,让我们可以像操作数组一样方便地操作单个二进制位,同...

STL

拓扑排序深入应用

拓扑图的深入应用一、有向图判环与环定位这是拓扑排序最基础的进阶用法,也是所有有向图问题的前置校验——绝大多数有向图算法的前提是图无环,而拓扑排序是最直观、最不易写错的判环方案。 1.1 核心原理拓扑排序的本质是“不断消除无前置依赖的节点(入度为0)”...

图论 / 拓扑序

拓扑排序

拓扑排序一、拓扑排序核心基础与算法设计1.1 基本定义与适用前提拓扑排序:对一个有向无环图(DAG, Directed Acyclic Graph) 的所有顶点进行线性排序,满足两个核心规则: 每个顶点在序列中仅出现一次; 对于图中任意一条有向边...

图论 / 拓扑序

图的基本概念与遍历

图论入门第一章 图的基本概念图是一种描述元素之间关联关系的抽象数据结构,也是算法竞赛中最常见的模型之一(导航、社交网络、路径规划等问题均可抽象为图模型)。 1.1 图的定义一个图由顶点集V和边集E两部分组成,记作 $G=<V,E&g...

图论 / 搜索

线段树

线段树讲义目录 线段树的结构和思想 基础操作:单点修改与区间查询 进阶操作:复杂的信息合并 高级操作:区间打标记(懒标记)与标记下传 4.1 基础懒标记:区间加法+区间查询最大值 4.2 复杂懒标记:加法、乘法、赋值混合操作 特殊应用:线段树上二分 ...

数据结构

最小生成树与次小生成树

最小生成树(MST)与次小生成树(SMST)前置知识要求学习前,需熟练掌握以下内容: 图的基础存储方式(邻接表/链式前向星) 并查集(路径压缩+按秩合并,时间复杂度近似 $O(\alpha(n))$ ) 树的DFS/BFS遍...

图论

LCA 问题

LCA 问题一、前置知识学习本讲义前,你需要掌握以下内容: 树的基本概念:根节点、父/子节点、深度、祖先、子树、路径等 树的存储方式:邻接表(vector 实现) 基础搜索算法:DFS(深度优先搜索)、BFS(广度优先搜索) 二进制...

图论

倍增与RMQ问题

倍增与RMQ问题前言倍增(Binary Lifting)是算法竞赛中核心的优化思想,其本质是通过二进制拆分将线性规模的操作压缩到对数级别,核心解决“可合并状态下的快速跳转、区间信息查询”问题;而RMQ(Range Maximum/Minim...

优化思想
12

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。