- 编程与算法竞赛知识点大纲
-
编程基础
- C++语言
- 基本格式与版本选择
- 输入输出
- string的使用
- 语言基础
- 竞赛常用库函数
- 排序
- 最值查找
- 二分查找
- 大小写转换
- 全排列
- pair、vector、list、stack、queue、set、map的使用
- STL(标准模板库)
- C++语言
-
算法基础与提高
- 时间复杂度分析
- 枚举
- 模拟
- 排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 桶排序
- 基础算法
- 进制转换
- 前缀和
- 差分
- 离散化
- 贪心算法
- 双指针
- 二分查找
- 倍增算法
- 构造算法
- 位运算
-
数据结构基础与提高
- 基础数据结构
- 链表
- 栈
- 队列
- 堆
- ST表
- 路径压缩
- 可撤销并查集
- 带权并查集
- 树的基本概念
- 树的遍历
- 树的直径和重心
- LCA(最近公共祖先)
- 树上问题
- 树上差分
- DFS序
- 树链剖分
- 树状数组
- 二维树状数组
- 树形数据结构
- 树状数组上二分
- 动态开点
- 标记永久化
- 线段树
- 线段树
- 线段树与扫描线
- 01-Trie
- Splay
- FHQ-Treap
- 单调数据结构
- 单调栈
- 单调队列
- 分块
- 整数划分分块
- 数论分块
- STL的简单实现
- 普通莫队
- 基础数据结构
-
图论基础与提高
- 图的基本概念
- DFS(深度优先搜索)
- BFS(广度优先搜索)
- 拓扑排序
- 基础拓扑排序
- 最短路径
- Floyd算法
- Dijkstra算法
- Johnson算法
- 生成树
- Kruskal算法
- Prim算法
- 图的基本概念
-
数学基础与提高
- 矩阵运算
- 矩阵基本运算(矩阵乘法)
- 高斯消元
- 行列式
- 数论
- 整除/同余基本概念
- GCD(最大公约数)
- LCM(最小公倍数)
- 朴素判定
- 埃氏筛法
- 唯一分解定理
- 约数定理(个数、和)
- 快速幂
- 逆元/降幂
- 费马小定理
- 欧拉函数
- 欧拉降幂
- 欧拉线性筛法
- 裴蜀定理与EXGCD
- 组合数学
- 计数原理
- 组合问题分类
- 选排列
- 圆排列
- 错排列
- 组合数计算与组合恒等式
- 集合与朴素容斥
- 矩阵运算
-
字符串处理基础与提高
- 搜索
- DFS基础
- 回溯
- 剪枝
- 记忆化
- 动态规划
- 线性dp
- 二维dp
- LIS(最长递增子序列)
- LCS(最长公共子序列)
- 01背包
- 完全背包
- 多重背包
- 高级背包问题(二维费用)
- 单调队列优化
- 自上而下树形dp
- 自下而上树形dp
- 路经相关树形dp
- 换根dp
- 区间dp
- 基础区间DP
- 环形区间DP
- 状压dp
- 数位dp
- 期望dp
- 概率dp
- KMP算法
- 字符串hash
- Manacher算法
- 字典树初步
- 搜索
-