吴文虎、王建德编著的《世界大学生程序设计竞赛<ACM\\ICPC>高级教程(第2册程序设计中常用的解题策略)》是针对世界大学生程序设计竞赛(ACM/ICPC)而编写的第二册参考书。思维方式和解题策略是相互联系的。从某种意义上讲,第一册所述的思维方式也是解题策略,而本册所述的解题策略也处处渗透着前述的思维方式。第一篇主要是从思维方式的角度谈解题方法,而本篇则侧重从行为特征的角度来谈,两篇论述的角度有所不同,但目标是一致的。 程序设计的解题策略,是指编程解题时所采取的一种基本方略,是带有全局性、概括性、综合性的思路。本书主要包括利用树型结构解题的策略、利用图形(网状)结构解题的策略、数据关系上的构造策略、数据统计上的二分策略、动态规划上的优化策略、计算几何上的应对策略六个章节,旨在引导参赛学生学习并掌握正确的编程解题策略。
吴文虎、王建德编著的《世界大学生程序设计竞赛<ACM\\ICPC>高级教程(第2册程序设计中常用的解题策略)》是针对世界大学生程序设计竞赛(ACM/ICPC)而编写的第二本参考书。
ACM/ICPC是大学生智力与计算机解题能力的竞赛,是世界公认的最具影响力的、规模最大的国际顶级赛事,被称为大学生的信息学奥林匹克。
第一册主要介绍程序设计中解题的常用思维方式。《世界大学生程序设计竞赛<ACM\\ICPC>高级教程(第2册程序设计中常用的解题策略)》是第一册的继续,只是换了一个角度,分4方面介绍解题策略:数据关系上的构造策略;数据统计上的二分策略;动态规划中的优化策略;计算几何题的应对策略。
本书面向参加世界大学生程序设计竞赛(ACM/ICPC)的高等院校学生,也可作为程序设计爱好者的参考用书。
第7章 利用树状结构解题的策略
7.1 解决树的最大一最小划分问题的一般方法
7.2 利用最小生成树及其扩展形式解题
7.2.1 利用最小生成树解题
7.2.2 最小k度限制生成树的思想和应用
7.2.3 次小生成树的思想和应用
7.3 利用线段树解决区间计算问题
7.3.1 线段树的基本概念
7.3.2 线段树的基本操作
7.3.3 应用线段树解题
7.4 利用伸展树优化动态集合的操作
7.4.1 伸展树的基本操作
7.4.2 伸展树的效率分析
7.4.3 应用伸展树解题
7.5 利用左偏树实现优先队列的合并
7.5.1 左偏树的定义和性质
7.5.2 左偏树的操作
7.5.3 应用左偏树解题
7.6 利用“跳跃表”替代树结构
7.6.1 跳跃表的概况
7.6.2 跳跃表的基本操作
7.6.3 跳跃表的效率分析
7.6.4 应用跳跃表解题
小结
第8章 利用图形(网状)结构解题的策略
8.1 利用网络流算法解题
8.1.1 网络与流的概念
8.1.2 最大流算法的核心——增广路径
8.1.3 通过求最大流计算最小割切
8.1.4 求容量有上下界的最大流问题
8.1.5 网络流的应用
8.2 利用图的匹配算法解题
8.2.1 匹配的基本概念
8.2.2 计算二分图匹配的方法
8.2.3 利用一一对应的匹配性质转化问题
8.2.4 优化匹配算法
8.3 利用“分层图思想”解题
8.3.1 利用“分层图思想”构建图论模型
8.3.2 利用“分层图思想”优化算法
8.4 利用平面图性质解题
8.4.1 平面图的概念
8.4.2 平面图的应用实例
8.5 正确选择图论模型,优化图的运算
8.5.1 正确选择图论模型
8.5.2 在充分挖掘和利用图论模型性质的基础上优化算法
小结
第9章 数据关系上的构造策略
9.1 选择数据逻辑结构的基本原则
9.1.1 充分利用“可直接使用”的信息
9.1.2 不记录“无用”信息
9.2 选择数据存储结构的基本方法
9.2.1 合理采用顺序存储结构
9.2.2 必要时采用链式存储结构
9.3 科学组合多种数据结构
小结
第10章 数据统计上的二分策略
10.1 利用线段树统计数据
10.2 一种解决动态统计的静态方法
10.2.1 讨论一维序列的求和问题
10.2.2 将一维序列的求和问题推广至二维
10.3 在静态二叉排序树上统计数据
10.3.1 建立静态二叉排序树
10.3.2 在静态二叉排序树上进行统计
10.3.3 静态二叉排序树的应用
10.4 在虚二叉树上统计数据
小结
第11章 动态规划上的优化策略
11.1 减少状态总数的基本策略
11.1.1 改进状态表示
11.1.2 选择适当的规划方向
11.2 减少每个状态决策数的基本策略
11.2.1 利用最优决策的单调性
11.2.2 优化决策量
11.2.3 合理组织状态
11.2.4 细化状态转移
11.3 减少状态转移时间的基本策略
11.3.1 减少决策时间
11.3.2 减少计算递推式的时间
小结
第12章 计算几何上的应对策略
12.1 应对纯粹计算题的策略探讨
12.1.1 利用二重二叉树计算长方体的体积并
12.1.2 利用多维线段树和矩形切割思想解决平面统计或空间统计问题
12.1.3 利用极大化思想解决最大子矩形问题
12.1.4 利用半平面交的算法计算凸多边形
12.2 应对存在性问题的策略探讨
12.2.1 直接通过几何计算求解
12.2.2 转换几何模型求解
12.3 应对最佳值问题的策略探讨
12.3.1 采用高效的几何模型
12.3.2 采用极限法
12.3.3 采用逼近最佳解的近似算法
小结