OI省选算法汇总及学习计划(转)
1.1 基本数据结构
-
数组(√)
-
链表(√),双向链表(√)
-
队列(√),单调队列(√),双端队列(√)
-
栈(√),单调栈(√)
1.2 中级数据结构
-
堆(√)
-
并查集与带权并查集(√)
-
hash 表(√)
自然溢出
双hash
1.3 高级数据结构
-
树状数组(√)
-
线段树(√),线段树合并
-
平衡树
Treap 随机平衡二叉树
Splay 伸展树
- Scapegoat Tree 替罪羊树
-
块状数组,块状链表
5.* 树套树
线段树套线段树
线段树套平衡树
* 平衡树套线段树
6.可并堆
左偏树
*配对堆
- KDtree,四分树
1.4 可持久化数据结构
-
可持久化线段树
主席树
-
- 可持久化平衡树
-
- 可持久化块状数组
1.5 字符串相关算法及数据结构
-
KMP
-
AC 自动机
-
后缀数组
-
*后缀树
-
*后缀自动机
-
字典树 Trie
-
manacher
1.6 图论相关
-
最小生成树
prim(√)
kruskal(√)
-
最短路(√),次短路,K短路
spfa
dijkstra
floyd
-
图的连通
连通分量
割点,割边
-
网络流
最大流
最小割
费用流
分数规划
-
树相关
树上倍增(√),公共祖先(√)
树链剖分
树的分治算法(点分治,边分治,*动态?树分治)
动态树 (LCT,*树分块)
虚树
*prufer编码
-
拓扑排序
-
欧拉图
-
二分图
*KM算法
匈牙利算法
1.7 数学相关
-
(扩展)欧几里得算法(√),筛法(√),快速幂(√)
斐蜀定理
更相减损术
-
欧拉函数与*降幂大法
-
费马小定理
-
排列组合
lucas定理
-
乘法逆元(√)
-
矩阵乘法
-
数学期望与概率
-
博弈论
sg函数
树上删边游戏
-
*拉格朗日乘子法
-
中国剩余定理
-
线性规划与网络流
-
单纯型线性规划
-
辛普森积分
-
模线性方程组
-
容斥原理与莫比乌斯反演
-
置换群
-
快速傅里叶变换
-
*大步小步法(BSGS),扩展BSGS
1.8 动态规划
-
一般(√),背包(√),状压,区间,环形,树形,数位动态规划
记忆化搜索
斯坦纳树
背包九讲
-
斜率优化与* 四边形不等式优化
-
环 + 外向树上的动态规划
-
*插头动态规划
1.9 计算几何
-
计算几何基础
-
三维计算几何初步
-
梯形剖分与三角形剖分
-
旋转卡壳
-
半平面交
-
pick定理
-
扫描线
1.10 搜索相关
-
bfs,dfs
-
A* 算法
-
迭代加深搜索,双向广搜
1.11 特殊算法
-
莫队算法,*树上莫队
-
模拟退火
-
爬山算法
-
随机增量法
1.12 其它重要工具与方法
1.模拟(√)与贪心(?√)
-
二分(√),三分法(求偏导)
-
分治,CDQ分治
-
高精度
-
离线
-
ST表(√)
1.13 STL(√)
-
map(√)
-
priority_queue(√)
-
set
-
bitset
-
rope
1.14 非常见算法
-
*朱刘算法
-
*弦图与区间图