第7章 利用树状结构解题的策略 1
7.1 解决树的最大一最小划分问题的一般方法 1
7.2 利用最小生成树及其扩展形式解题 8
7.2.1 利用最小生成树解题 10
7.2.2 最小k度限制生成树的思想和应用 15
7.2.3 次小生成树的思想和应用 18
7.3 利用线段树解决区间计算问题 20
7.3.1 线段树的基本概念 20
7.3.2 线段树的基本操作 21
7.3.3 应用线段树解题 23
7.4 利用伸展树优化动态集合的操作 27
7.4.1 伸展树的基本操作 27
7.4.2 伸展树的效率分析 30
7.4.3 应用伸展树解题 32
7.5 利用左偏树实现优先队列的合并 33
7.5.1 左偏树的定义和性质 33
7.5.2 左偏树的操作 35
7.5.3 应用左偏树解题 41
7.6 利用“跳跃表”替代树结构 43
7.6.1 跳跃表的概况 43
7.6.2 跳跃表的基本操作 44
7.6.3 跳跃表的效率分析 47
7.6.4 应用跳跃表解题 49
小结 53
第8章 利用图形(网状)结构解题的策略 54
8.1 利用网络流算法解题 54
8.1.1 网络与流的概念 54
8.1.2 最大流算法的核心——增广路径 57
8.1.3 通过求最大流计算最小割切 61
8.1.4 求容量有上下界的最大流问题 65
8.1.5 网络流的应用 70
8.2 利用图的匹配算法解题 76
8.2.1 匹配的基本概念 76
8.2.2 计算二分图匹配的方法 77
8.2.3 利用一一对应的匹配性质转化问题 84
8.2.4 优化匹配算法 87
8.3 利用“分层图思想”解题 94
8.3.1 利用“分层图思想”构建图论模型 94
8.3.2 利用“分层图思想”优化算法 96
8.4 利用平面图性质解题 102
8.4.1 平面图的概念 102
8.4.2 平面图的应用实例 103
8.5 正确选择图论模型,优化图的运算 106
8.5.1 正确选择图论模型 106
8.5.2 在充分挖掘和利用图论模型性质的基础上优化算法 111
小结 116
第9章 数据关系上的构造策略 118
9.1 选择数据逻辑结构的基本原则 118
9.1.1 充分利用“可直接使用”的信息 119
9.1.2 不记录“无用”信息 122
9.2 选择数据存储结构的基本方法 125
9.2.1 合理采用顺序存储结构 126
9.2.2 必要时采用链式存储结构 126
9.3 科学组合多种数据结构 128
小结 130
第10章 数据统计上的二分策略 131
10.1 利用线段树统计数据 131
10.2 一种解决动态统计的静态方法 135
10.2.1 讨论一维序列的求和问题 136
10.2.2 将一维序列的求和问题推广至二维 137
10.3 在静态二叉排序树上统计数据 138
10.3.1 建立静态二叉排序树 138
10.3.2 在静态二叉排序树上进行统计 139
10.3.3 静态二叉排序树的应用 140
10.4 在虚二叉树上统计数据 143
小结 147
第11章 动态规划上的优化策略 148
11.1 减少状态总数的基本策略 149
11.1.1 改进状态表示 149
11.1.2 选择适当的规划方向 152
11.2 减少每个状态决策数的基本策略 153
11.2.1 利用最优决策的单调性 154
11.2.2 优化决策量 161
11.2.3 合理组织状态 163
11.2.4 细化状态转移 164
11.3 减少状态转移时间的基本策略 166
11.3.1 减少决策时间 166
11.3.2 减少计算递推式的时间 168
小结 170
第12章 计算几何上的应对策略 172
12.1 应对纯粹计算题的策略探讨 172
12.1.1 利用二重二叉树计算长方体的体积并 173
12.1.2 利用多维线段树和矩形切割思想解决平面统计或空间统计问题 179
12.1.3 利用极大化思想解决最大子矩形问题 188
12.1.4 利用半平面交的算法计算凸多边形 197
12.2 应对存在性问题的策略探讨 200
12.2.1 直接通过几何计算求解 200
12.2.2 转换几何模型求解 202
12.3 应对最佳值问题的策略探讨 204
12.3.1 采用高效的几何模型 204
12.3.2 采用极限法 205
12.3.3 采用逼近最佳解的近似算法 211
小结 212