目录
数据结构
基础
单调栈、单调队列、优先队列、Trie树、并查集、C++STL set、map、iterator
实用
线段树、数链剖分、平衡树基础(treap)
高级
持久化数据结构、KD树、splay、LCT
图论
铜牌
Kruskal最小生成数、dijkstra,floyd、多元最短路和分层图最短路
并查集和加权并查集
树的直径、基础树形dp,倍增求LCA
基本网络流、二分图(板子)
理解2-sat问题
银牌
基础数据结构构造或优化图
了解负环和bellman-ford算法及部分优化、差分约束
理解基环树
各种树上的加速算法。数链剖分,点分治
理解网络流、输出网络流的结果图、最小费用可行流
双连通分量Tarjan和kosaraju算法,强连通分量
金牌
各种构造图方法,线段树优化、常见数据结构优化,并利用思维特异性优化,网络流和最短路等
熟练掌握树和图的各种特性,在计数技术上不能落后,善于使用计数DP和一些计数定理处理问题
深入了解大多数常见树上的数据结构,LCT等
掌握上下界的网络流变化
了解大量模板
DP
铜牌
经典问题:背包、LCS、LIS
最长上升子序列Onlogn
有向无环图
了解状压DP、数形DP和环形处理问题
银牌
记忆化搜索和递归
树形DP和状态压缩方法,以及环形的处理和数位DP的特异化写法
常见的区间DP
学会从状态转移方程和具象化问题两个方面找优化
学会基本数据结构优化动态规划
金牌
善于抽象化定义状态和状态规划
学会利用几何性质优化动态规划(斜率、四边形不等式)
熟练多角度发散性思考
足够强力的思维水平