算法标签分类大全

语言基础

核心语法

基础语法 顺序结构 顺序结构实例 分支结构 选择结构 选择语句 循环结构

数据存储

一维数组 多维数组 字符数组 数组 结构体 结构体和文件 数的存储与组织

核心能力

基本运算 位运算 函数 输入输出 递归 递归算法

基础数据结构

基础类型

线性表 链表 单调栈 队列 二叉堆/优先队列 map queue 二叉树

核心结构

并查集 树状数组 二维树状数组 线段树 李超线段树 吉司机线段树 可持久化

高级结构

平衡树 左偏树/可并堆/斜堆 动态树(Link-Cut Tree) 树套树 整体二分 K-D Tree 全局平衡二叉树 珂朵莉树 差分链表 RMQ/ST表 对顶堆 线段树分治 合并/分裂 CDQ分治

核心算法思想

基础思想

枚举 模拟 贪心 贪心算法 递推 递推算法 分治 递归算法

动态规划

线性DP 区间DP 背包DP 数位DP 记忆化搜索 状压DP 树形DP DP of DP 插头DP 计数DP 状态机模型DP 概率DP 换根DP 动态DP 最长上升子序列(LIS)

DP优化

降维 降维优先队列 矩阵加速 斜率优化 wqs二分 四边形不等式 决策单调性 凸函数

图论与树论

图论

图论 拓扑排序 连通分量 强连通分量缩点 双连通分量 割点割边 最短路 floyd SPFA 严格次短路 K短路 最小生成树 次小生成树 差分约束 欧拉回路 最小环 负环判定 二分图判定 二分图匹配 一般图最大匹配 网络流 最大流 最小割 费用流 2-SAT 圆方树/仙人掌

树论

点分治 动态树分治 树上遍历 启发式合并 LCA 树链剖分 虚树 基环树 笛卡尔树 Kruskal重构树 Prüfer序列 哈夫曼树 树的直径 树的中心 树的重心 树上差分

字符串算法

匹配与查找

kmp 扩展KMP manacher AC自动机 失配树 最小表示法

高级结构

字典树(trie) 回文自动机 后缀自动机 后缀数组 后缀树 有限状态自动机

辅助操作

字符数组与字符串 字符串 字典序 字符串哈希 哈希(hash) 正则表达式 Lyndon分解

数学与数论

数论

最大公约数 最小公倍数 试除法 线性筛 素数判断 欧拉函数 欧拉定理 扩展欧几里德算法 中国剩余定理 乘法逆元 莫比乌斯反演 exBSGS 杜教筛

组合数学

排列组合 二项式定理 康托展开 鸽笼原理 容斥 斐波那契 卡特兰数 斯特林数 生成函数 拉格朗日反演 错位排列

线性代数

向量 矩阵运算 矩阵乘法 线性递推 高斯消元 线性基 矩阵树定理

博弈论

Nim游戏 博弈树 Nim积 SG函数

计算几何

计算几何 立体解析几何 凸包 叉积 线段相交 点积 半平面交 凸多边形的交 扫描线 旋转卡壳

思维技巧

二分 二分答案 倍增 双指针 单调队列 滑动窗口 前缀和 差分 离散化 莫队 三分 状态压缩 随机化 随机算法 均摊分析 分类讨论 近似算法 逆向 进制转换 高精度 复杂度分析 算法设计 排序 第K数 STL 排序不等式 二维前缀和 反悔贪心

杂项与专题

约瑟夫问题 模板 构造题 GarsiaWachs 状态压缩