从零开始的OI学习之路
donotctjuntilAFO · · 个人记录
简介
从语言到省选的知识点,每个知识点附有前置知识,可能还会有学习笔记
前置知识为必要顺序,有序列表为推荐顺序。
oi-wiki.org
语言(普及、提高)
普及
-
顺序结构
-
分支结构
-
循环结构
-
数组
-
字符串 (前置知识:数组)
-
函数
-
递归
-
结构体
-
STL (string,vector,deque,set(multiset),map(multimap),priority_queue)
-
文件操作
提高
-
STL (pair,queue,stack,list,bitset,tuple)
-
重载运算符
-
命名空间
-
类
-
引用
-
宏
-
头文件
-
指针
-
杂项(pb_ds,lambda表达式)
算法(普及、提高、省选)
普及
-
复杂度分析
-
模拟
-
搜索(详情见搜索部分)
-
高精度
-
排序(快速排序,归并排序,计数排序)
-
贪心、哈夫曼树(前置知识:排序)
-
二分(三分)
-
图论(详情见图论部分)
-
DP(详情见动态规划部分)
-
前缀和、差分
-
离散化
-
双指针
-
倍增
提高
-
分治(前置知识:递归)
-
字符串(详情见字符串部分)
-
数学(详情见数学部分)
-
随机化(模拟退火)
-
构造
省选
-
计算几何(详情见计算几何部分)
-
杂项(二进制分组)
数据结构(普及、提高、省选)
普及
-
线性表(数组、栈、队列、双端队列)
-
链表(单向链表、双向链表、循环链表)
-
哈希表
-
堆
-
并查集 并查集学习笔记
-
单调栈、单调队列
-
ST表(前置知识:倍增)
-
二叉搜索树
-
trie(0-1trie)
提高
-
树状数组(权值树状数组) 树状数组学习笔记
-
线段树(动态开点线段树,权值线段树、扫描线) 线段树学习笔记
-
分块(数论分块、块状链表、根号分治) 分块学习笔记 根号分治学习笔记
-
平衡树(treap、FHQtreap、splay)
省选
-
可并堆(左偏树)
-
可持久化数据结构(可持久化线段树、可持久化并查集、可持久化trie、可持久化分块、可持久化可并堆)
-
高级线段树(主席树、李超线段树、吉老师线段树、zkw线段树)
-
高级平衡树(WBLT、SBT、AVL树、B树、B+树、替罪羊树、Leafy Tree、笛卡尔树、红黑树、左偏红黑树、跳表)
-
树套树
-
KD-Tree (前置知识:替罪羊树)
-
动态树(LCT,前置知识:Splay)
-
离线算法(CDQ 分治、整体二分、莫队)
-
杂项(珂朵莉树、sqrt tree等)
搜索部分(普及、提高)
普及
-
朴素
dfs搜索(回溯法) -
朴素
bfs搜索 -
搜索剪枝(记忆化搜索、最优性剪枝、可行性剪枝)
提高
-
双向搜索(双向dfs,双向bfs)
-
A*
-
迭代加深搜索
-
IDA* (前置知识:迭代加深搜索,A*)
动态规划部分(普及、提高、省选)
普及
-
基础DP、记忆化搜索(数字三角形、LIS、LCS)
-
背包(0-1背包、完全背包、多重背包、背包变种)
提高
-
区间DP
-
树形DP
-
DAG上DP
-
状压 DP
-
数位 DP
-
计数 DP
-
概率 DP
-
DP优化(单调队列/单调栈优化DP、转移优化DP、矩阵快速幂优化DP)
省选
-
DP优化(斜率优化DP、四边形不等式优化DP、状态设计优化DP、wqs带权二分、分治优化DP)
-
动态 DP
-
插头 DP
字符串部分(普及、提高、省选)
普及
-
KMP
-
字符串哈希
-
trie(详情见数据结构部分)
提高
-
前缀函数
-
manacher、回文树
-
AC自动机
-
失配树
-
后缀自动机、后缀数组、后缀树
省选
-
子序列自动机
-
Lyndon 分解
-
扩展KMP
-
Boyer-Moore 算法
-
Main-Lorentz 算法
数学部分(普及、提高、省选)
普及
-
进制
-
位运算
-
快速幂
-
埃氏筛
-
欧几里德算法、裴蜀定理
提高
-
线性筛
-
扩展欧几里德算法
-
欧拉定理、费马小定理、逆元
-
组合数学
-
拉格朗日插值
-
矩阵
-
康托展开
-
高斯消元
-
线性基
-
原根
-
离散对数(bsgs)
-
中国剩余定理
-
卢卡斯定理
-
扩展欧拉定理
-
基础博弈论
省选
-
扩展中国剩余定理
-
扩展卢卡斯定理
-
扩展bsgs
-
FFT、NTT
-
多项式全家桶
-
剩余、二次剩余
-
莫比乌斯反演(二项式反演、欧拉反演、单位根反演、斯特林反演)
-
杜教筛(Powerful Number 筛、Min_25 筛、洲阁筛)
-
高级博弈论(SG函数)
-
Miller_Rabin
图论部分(普及、提高、省选)
普及
-
邻接矩阵、邻接表、链式前向星
-
图上dfs、bfs(详情见搜索部分)
-
树的直径、树的重心、基环树、DAG
-
拓扑排序
-
洪水填充
提高
-
单源最短路(dijkstra、spfa)
-
多源最短路(floyd、johnson)
-
二分图最大匹配
-
最小生成树(kruskal、prim)
-
欧拉图、欧拉回路
-
倍增lca
-
差分约束
-
tarjan(边双连通分量、点双连通分量、强连通分量)
省选
-
最大流、最小割
-
最小费用最大流
-
二分图最大权匹配
-
kruskal重构树
-
树链剖分
-
同余最短路
-
一般图最大匹配
-
树上启发式合并
-
虚树
-
点分治、边分治
-
点分树、边分树
-
矩阵树
-
斯坦纳树
-
2-SAT
-
Prufer 序列
-
一般图最大权匹配
计算几何部分(提高、省选)
提高
-
向量
-
多边形、点积、叉积
-
极角排序
-
二维凸包
-
旋转卡壳
省选
-
平面最近点对
-
半平面交
-
三角剖分
-
三维凸包