跳转至

旧版大纲要点

提高级大纲

2.1 计算机基础与编程环境

【5】在Linux系统终端中使用mkdir、cp、rm、mv等命令新建、复制、删除、移动文件或目录

【5】在Linux系统终端中使用cd、pwd、ls等命令更改、显示目录路径和查看目录中的文件

【5】在Linux系统下使用Gedit、Vim或Emacs等文本编辑工具编写代码

【5】熟悉g++、gcc等编译器以及优化、数学库等常见编译选项

【5】在Linux系统终端中运行程序,并使用time命令查看程序用时(区分real time、sys time和user time)

【5】了解调式工具gdb及其break、display、continue、step等命令

2.2 C++程序设计

1.类(class)

【6】类的概念及简单应用

【6】成员函数和运算符重载

2.STL模板

【5】集合(set)

【5】列表(list),双端队列(deque),优先队列(priority_queue)

【5】多重集合(multiset)

【5】映射(map),多重映射(multimap)

【5】对(pair),元组(tuple)

2.3 数据结构

1.线性结构

【5】双端栈

【5】双端队列

【5】有序队列

【6】优先队列

【6】倍增表(ST表)

2.集合与森林

【6】等价类

【6】并查集

【6】树与二叉树的转化——孩子兄弟表示法

3.特殊树

【6】线段树与树状数组

【6】字典树(trie树)

【7】笛卡尔树

【8】二叉平衡树AVL、treap、splay等

【8】基环树

4.常见图

【5】稀疏图

【6】偶图(二分图)

【6】欧拉图

【6】有向无环图

【7】连通图与强连通图

【7】重连通图

5.哈希表

【5】数值哈希函数构造

【6】排列哈希函数构造

【6】字符串哈希函数构造

【6】哈希函数冲突的常见解决方法

2.4 算法

1.复杂度分析

【6】空间复杂度分析

【6】时间复杂度分析

2.基础算法

【6】分治算法

3.排序算法

【5】归并排序

【5】快速排序

【6】堆排序

【6】树形选择排序(锦标赛排序)

【5】桶排序

【6】基数排序

4.字符串相关算法

【5】字符串匹配算法——KMP

5.搜索算法

【6】搜索的剪枝优化

【6】记忆化搜索

【7】启发式搜索

【7】双向宽度优先搜索

【7】迭代加深搜索

【8】搜索对象的压缩存储

6.图论算法

【6】Prim和kruskal等求最小生成树算法

【7】求次小生成树算法

【6】Dijkstra、bellman_ford、SPFA等求单源最短路算法

【7】求单源次短路径算法

【6】Floyd-Warshall算法求任意两点间的最短路和传递闭包

【6】有向无环图的拓扑排序算法

【6】求欧拉道路和欧拉回路算法

【6】二分图的构造及其判定算法

【6】最近公共祖先

【7】求强联通分量算法

【7】强连通分量的缩点算法

【7】求割点、割边算法

7.动态规则

【6】树型动态规划

【7】状态压缩动态规划

【8】动态规划的常用优化

2.5 数学

  1. 高中数学

    【5】代数

    【6】解析几何

    【6】立体几何

  2. 初等数论

    【5】同余式

    【7】欧拉定理和欧拉函数

    【7】费马小定理

    【7】威尔逊定理

    【7】裴蜀定理

    【7】逆元

    【7】扩展欧几里得算法

    【7】孙子定理(即中国剩余定理)

  3. 组合数学

    【6】可重集排列

    【6】可重集组合

    【6】错排列、圆排列

    【6】鸽巢原理

    【6】二项式定理

    【7】容斥原理

    【7】卡特兰数

  4. 线性代数

    【5】矩阵概念

    【6】特殊矩阵:稀疏矩阵,三角矩阵,对称矩阵

    【6】矩阵的初等变换

    【6】矩阵的加减乘和转置运算

    【7】线性方程组的高斯消元法