OI / ACM 知识归纳
修订:AbandonZHANG
学习内容(不是很好区分难度,详见练习题):
0.windos及linux基本的系统命令以及对拍方法。
1.基础知识(待扩展,但觉得只要做USACO就可以掌握)
2.搜索
-N重循环
-BFS
=双向
=判重
+HASH(尤其是字符串HASH)
+分段HASH
+各种数据结构判重(Tire树、平衡树等)
=A*
-DFS
=最优化剪枝
=可行性剪枝
=记忆化搜索
-ID-DFS
-ID-A*
-DLX
-近似算法及其他
=模拟退火
=遗传算法
=随机调整
=随机贪心
3.DP(主要是自己做题总结,感悟+数学能力)
-线性DP
=一维线性DP
=二维线性DP
-树形DP
-插头DP
-优化
=四边形优化 (时间)
=斜率优化 (时间)
=单调队列 (时间)
=状态压缩 (空间)
4.字符串操作
-c++的string
-KMP
-ExKMP
-最小表示法
-Tire树
-AC自动机
-后缀数组
-后缀树(好像被淘汰了)
-后缀自动机【这个可以忽略】
5.数据结构
-链表
=普通链表
=跳跃表
=Dancing links
-队列
=普通队列
=循环队列
=单调队列
-栈
=手工栈搜索
=表达式处理
-堆
=哈夫曼树
=可合并堆(*)
+左偏树
+斜堆
+二项堆
-并查集
-Trie树
=AC自动机
=Trie图
-树状数组
-线段树(重点推荐)
-平衡树
=红黑树(知道理论+会用set和map)
=AVL
=Treap
=超快SBT(重点推荐)
=万能Splay(重点推荐)
-块状链表(*)
-树链剖分(*)
6.图论与树
-图的联通性
=floodfill
=BFS分层
=两次BFS求强连通分量
=拓扑排序
=关键路径
=求环
=欧拉回路
=汉密尔顿回路
=Tarjan算法
+求强连通分量
+求割点
+求桥
-最短路
=floyd
=Dijstra
=SPFA
+SLF和LLL优化
=Dijstra+heap
=Bellman-ford求差分约束系统
=floyd*求最小环
=K短路
=限制条件最短路
=分层图最短路
=状态压缩最短路
-生成树
=prim
=Kruskal
=prim+heap
=破环法求最小生成树
=动态最小生成树
=次小生成树
=最大价值比生成树
=特殊生成树
=统计生成树的个数(组合数学)
-树上问题
-LCA和RMQ
-节点到根的距离
-树的直径
-树的中心
-任意点对间距离
- 2-SAT问题
7.网络流
-二分图
=匈牙利算法
=KM算法
=覆盖集与独立集
=最小路径覆盖
-最大流
=DINIC
=SAP
=HLLP
=有上下界的最大流
-最小割
=求当前流的最小割
=平面图最小割转最短路
=闭合图
=最小点权覆盖集与最大独立点权集
=0/1分数规划
=最大密度子图
-费用流
=最短路增广费用流
=zkw-费用流最小费用可行流
-构图技巧(请学习网络流24题,作者:郭家宝)
8.数论
-gcd
=stein算法
=欧几里得算法
=拓展欧几里得算法
-质数
=MR测试
=快速幂
=sqrt(n)判定
=反质数
=算数基本定理及推论
-同余
=威尔逊定理
=费马小定理
=欧拉定理
=中国剩余定理
-进制相关
=精制转换=高精循环小数
=Self-number
-其他
=px+qy命题
=求n!位数的方法及推广
9. 组合数学
-排列组合数
-Polya原理
-鸽笼原理 && 容斥原理
-Fibonacci数列,Catalan数列,Stirling数
-母函数
-置换
10.计算几何
11.博弈论
-尼姆博奕(Nimm Game)
-威佐夫博奕(Wythoff Game)
-巴什博奕(Bash Game)
12.概率论
13.高等数学与线性代数
-高斯消元法