跳转到内容

算法竞赛

从复杂度与正确性出发,覆盖数据结构、搜索、动态规划、图论、字符串、竞赛数学与计算几何。每个知识点给出讲解、C++ 模板与模板题。

先学习复杂度、基础技巧与数据结构,再进入搜索、贪心和动态规划;图论、字符串与竞赛数学可以按题目需要交叉学习。每篇文章给出适用条件、复杂度、C++ 模板与模板题,模板题优先选用 Library Checker。

已完成 2 / 231 个知识点

基础与复杂度

复杂度分析、正确性论证与最常用的基础技巧。

  • 时间与空间复杂度规划中
  • 递归式与主定理规划中
  • 摊还分析规划中
  • 循环不变量与正确性证明规划中
  • 枚举规划中
  • 模拟规划中
  • 前缀和与差分规划中static_range_sum
  • 双指针与滑动窗口规划中
  • 离散化规划中
  • 位运算技巧规划中
  • 排序:比较排序与线性排序规划中
  • 二分查找与二分答案规划中
  • 三分法规划中
  • 分治规划中
  • 随机化技巧规划中
  • 高精度计算规划中addition_of_big_integersmultiplication_of_big_integersdivision_of_big_integers
  • 快速读写与代码模板规划中
  • 对拍与调试规划中

数据结构

按操作需求选择数据组织方式:静态查询、动态修改、可持久化与离线处理。

在状态空间中找解:遍历、剪枝、双向与启发式。

  • 深度优先搜索规划中
  • 广度优先搜索规划中
  • 回溯与剪枝规划中
  • 双向搜索规划中
  • 折半搜索规划中
  • 迭代加深与 IDA*规划中
  • A* 搜索规划中
  • Dancing Links规划中
  • 模拟退火与爬山规划中

贪心与构造

证明局部选择可以推出全局最优,并学会构造答案。

  • 贪心与交换论证规划中
  • 区间调度与区间覆盖规划中
  • 反悔贪心规划中
  • Huffman 编码规划中
  • 构造题思路规划中
  • 交互题规划中

动态规划

定义状态、写出转移、选择计算顺序,并用数据结构或性质优化转移。

图论

把关系、依赖与路径抽象为图:连通性、最短路、生成树、匹配与网络流。

树论

利用树的层次结构:直径、重心、祖先查询、路径与子树信息。

字符串

利用前缀、后缀、自动机和回文结构处理匹配与重复。

数论

整除、同余、积性函数与素数相关的算法。

组合数学

计数原理、经典数列、容斥与群论计数。

多项式与卷积

把计数和序列问题转成卷积,用 FFT、NTT 与形式幂级数高效求解。

线性代数

矩阵运算、消元、行列式与线性基。

概率与博弈

期望的线性性、随机过程与组合博弈。

  • 概率与期望的线性性规划中
  • 随机游走与马尔可夫链规划中
  • Nim 游戏规划中nim_product_64
  • SG 函数规划中
  • 常见博弈模型规划中

计算几何

在精度和退化情况下可靠地实现几何谓词与经典算法。

离线与分治技巧

通过调整处理顺序或整体处理询问来降低复杂度。