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