提高级信奥大纲的具体内容如下:
一、基础知识与编程环境
- 能在 Linux 系统终端中使用 mkdir,cp、rm、mv 等命令新建、复制、删除、移动文件或目录。
- 会在 Linux 系统终端中使用 cd,pwd,ls 等命令更改、显示目录路径和查看目录中的文件。
- 可在 Linux 系统下使用 Gedit,Vim 或 Emacs 等文本编辑工具编写代码。
- 熟悉 g++、gcc 等编译器以及优化、数学库等常见编译选项。
- 能够在 Linux 系统终端中运行程序,并使用 time 命令查看程序用时(区分 real time,sys time 和 user time)。
- 了解调试工具 gdb 及其 break,display,continue,step 等命令。
二、C++ 程序设计 - 类(class)
- 掌握类的概念及简单应用。
- 了解成员函数和运算符重载。
- STL 模板
- 熟悉集合(set)。
- 掌握列表(list)、双端队列(deque)、优先队列(priority_queue)。
- 了解多重集合(multiset)。
- 掌握映射(map)、多重映射(multimap)。
- 了解对(pair)、元组(tuple)。
三、数据结构
- 线性结构
- 掌握双端栈。
- 了解双端队列。
- 熟悉有序队列。
- 掌握优先队列。
- 了解倍增表(ST 表)。
- 集合与森林
- 了解等价类。
- 掌握并查集。
- 熟悉树与二叉树的转化 -- 孩子兄弟表示法。
- 特殊树
- 掌握线段树与树状数组。
- 了解字典树(trie 树)。
- 熟悉笛卡尔树。
- 掌握二叉平衡树 AVL、treap、splay 等。
- 了解基环树。
- 常见图
- 了解稀疏图。
- 掌握偶图(二分图)。
- 了解欧拉图。
- 掌握有向无环图。
- 了解连通图与强连通图。
- 了解重连通图。
- 哈希表
- 掌握数值哈希函数构造。
- 掌握排列哈希函数构造。
- 掌握字符串哈希函数构造。
- 了解哈希函数冲突的常用解决方法。
四、算法
- 复杂度分析
- 掌握空间复杂度分析。
- 掌握时间复杂度分析。
- 算法策略
- 了解离散化。
- 基础算法
- 掌握分治算法。
- 排序算法
- 掌握归并排序。
- 掌握快速排序。
- 掌握堆排序。
- 了解树形选择排序(锦标赛排序)。
- 掌握桶排序。
- 掌握基数排序。
- 字符串相关算法
- 掌握字符串匹配算法 --KMP。
- 搜索算法
- 掌握搜索的剪枝优化。
- 掌握记忆化搜索。
- 了解启发式搜索。
- 掌握双向宽度优先搜索。
- 掌握迭代加深搜索。
- 了解搜索对象的压缩存储。
- 图论算法
- 掌握 Prim 和 kruskal 等求最小生成树算法。
- 了解求次小生成树算法。
- 掌握 Dijkstra、bellman_ford、SPFA 等求单源最短路算法。
- 了解求单源次短路径算法。
- 掌握 Floyd-Warshall 算法求任意两点间的最短路和传递闭包。
- 掌握有向无环图的拓扑排序算法。
- 掌握求欧拉道路和欧拉回路算法。
- 掌握二分图的构造及其判定算法。
- 掌握最近公共祖先。
- 了解求强连通分量算法。
- 了解强连通分量的缩点算法。
- 了解求割点、割边算法。
- 动态规划
- 掌握树型动态规划。
- 掌握状态压缩动态规划。
- 了解动态规划的常用优化。
五、数学
- 高中数学
- 掌握代数。
- 掌握解析几何。
- 掌握立体几何。
- 初等数论
- 掌握同余式。
- 掌握欧拉定理和欧拉函数。
- 掌握费马小定理。
- 了解威尔逊定理。
- 了解裴蜀定理。
- 掌握模运算意义下的逆元。
- 掌握扩展欧几里得算法。
- 了解中国剩余定理。
- 组合数学
- 掌握可重集排列。
- 掌握可重集组合。
- 掌握错排列、圆排列。
- 掌握鸽巢原理。
- 掌握二项式定理。
- 掌握容斥原理。
- 掌握卡特兰(catalan)数。
- 线性代数
- 掌握矩阵概念。
- 了解特殊矩阵:稀疏矩阵、三角矩阵、对称矩阵。
- 掌握矩阵的初等变换。
- 掌握矩阵的加减乘和转置运算。
- 了解线性方程组的高斯消元法。