第1部分 [准备篇]攻克程序设计竞赛的学习方法 |
|
第1章 有效运用在线评测系统1.1 攻克程序设计竞赛的学习方法 1.2 什么是在线评测 1.3 用户注册 1.4 浏览问题 1.5 解答问题 1.6 个人页面 1.7 如何运用本书
|
|
第2部分 [基础篇]为程序设计竞赛做准备的算法与数据结构 |
|
第2章 算法与复杂度2.1 算法是什么 2.2 问题与算法示例 2.3 伪代码 2.4 算法的效率 2.5 入门问题
|
|
第3章 初等排序 3.1 挑战问题之前——排序 3.2 插入排序法 3.3 冒泡排序法 3.4 选择排序法 3.5 稳定排序 3.6 希尔排序法
| 阅读 |
第4章 数据结构4.1 挑战问题之前——什么是数据结构 4.2 栈 4.3 队列 4.4 链表 4.5 标准库的数据结构 4.6 数据结构的应用——计算面积
|
|
第5章 搜索 5.1 挑战问题之前——搜索 5.2 线性搜索 5.3 二分搜索 5.4 散列法 5.5 借助标准库搜索 5.6 搜索的应用——计算最优解
|
|
第6章 递归和分治法6.1 挑战问题之前——递归与分治 6.2 穷举搜索 6.3 科赫曲线
|
|
第7章 高等排序7.1 归并排序 7.2 分割 7.3 快速排序 7.4 计数排序 7.5 利用标准库排序 7.6 逆序数 7.7 最小成本排序
|
|
第8章 树8.1 挑战问题之前——树结构 8.2 有根树的表达 8.3 二叉树的表达 8.4 树的遍历 8.5 树遍历的应用——树的重建
|
|
第9章 二叉搜索树9.1 挑战问题之前——二叉搜索树 9.2 二叉搜索树——插入 9.3 二叉搜索树——搜索 9.4 二叉搜索树——删除 9.5 通过标准库管理集合
|
|
第10章 堆10.1 挑战问题之前——堆 10.2 完全二叉树 10.3 最大/最小堆 10.4 优先级队列 10.5 通过标准库实现优先级队列
|
|
第11章 动态规划法11.1 挑战问题之前——动态规划法的概念 11.2 斐波那契数列 11.3 最长公共子序列 11.4 矩阵链乘法
|
|
第12章 图12.1 挑战问题之前——图 12.2 图的表示 12.3 深度优先搜索 12.4 广度优先搜索 12.5 连通分量
|
|
第13章 加权图13.1 挑战问题之前——加权图 13.2 最小生成树 13.3 单源最短路径
|
|
第3部分 [应用篇]程序设计竞赛的必备程序库 |
|
第14章 高等数据结构14.1 互质的集合 14.2 范围搜索 14.3 其他问题
|
|
第15章 高等图算法15.1 所有点对间最短路径 15.2 拓扑排序 15.3 关节点 15.4 树的直径 15.5 最小生成树 15.6 其他问题
|
|
第16章 计算几何学16.1 几何对象的基本元素与表现 16.2 直线的正交/平行判定 16.3 投影 16.4 映象 16.5 距离 16.6 逆时针方向 16.7 判断线段相交 16.8 线段的交点 16.9 圆与直线的交点 16.10 圆与圆的交点 16.11 点的内包 16.12 凸包 16.13 线段相交问题 16.14 其他问题
|
|
第17章 动态规划法17.1 硬币问题 17.2 背包问题 17.3 最长递增子序列 17.4 最大正方形 17.5 最大长方形 17.6 其他问题
|
|
第18章 数论18.1 质数检验 18.2 最大公约数 18.3 幂乘 18.4 其他问题
|
|
第19章 启发式搜索 |
|