初级
1 基本算法:
1.1 枚举.
1.2 贪心
1.3 递归和分治法.
1.4 递推.
1.5 构造法.
1.6 模拟法.
2 图算法:
2.1 图的深度优先遍历和广度优先遍历.
2.2 最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)
2.3 最小生成树算法(prim,kruskal)
2.4 拓扑排序
2.5 二分图的最大匹配 (匈牙利算法)
2.6 最大流的增广路算法(KM算法)
3 数据结构.
3.1 串
3.2 排序(快排、归并排(与逆序数有关)、堆排)
3.3 简单并查集的应用.
3.4 哈希表和二分查找等高效查找法(数的Hash,串的Hash)
3.5 哈夫曼树
3.6 堆
3.7 trie树(静态建树、动态建树)
4 简单搜索
4.1 深度优先搜索
4.2 广度优先搜索
4.3 简单搜索技巧和剪枝
5 动态规划
5.1 背包问题
5.2 型如下表的简单DP
5.2.1 E[j]=opt{D+w(i,j)}
5.2.2 E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)
5.2.3 C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]} (最优二分检索树问题)
6 数学
6.1 组合数学:
6.1.1 加法原理和乘法原理.
6.1.2 排列组合.
6.1.3 递推关系.
6.2