新書推薦:
《
艺术家之路 塑造插画风格
》
售價:HK$
166.8
《
古乐钩沉(中国音乐学院60周年校庆中青年学者文集)
》
售價:HK$
132.2
《
我和抑郁症的3000天
》
售價:HK$
66.1
《
与骸骨交谈:我希望每一个真相都被发现
》
售價:HK$
76.2
《
人体使用手册3:自愈力的逻辑(全面解读身体面对疾病时的反应逻辑,学习更多有效的系列家庭按摩)
》
售價:HK$
61.6
《
素描简史:从文艺复兴到现代艺术
》
售價:HK$
436.8
《
智慧宫丛书028·神工智能 诸神与古代世界的神奇造物
》
售價:HK$
87.4
《
街头健身训练指南
》
售價:HK$
266.6
|
內容簡介: |
《算法竞赛入门经典(2版)》是一本算法竞赛的入门与提高教材,把C/C 语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。全书内容分为12章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、C 与STL入门、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法、高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量例题和习题。书中的代码规范、简洁、易懂,不仅能帮助读者理解算法原理,还能教会读者很多实用的编程技巧;书中包含的各种开发、测试和调试技巧也是传统的语言、算法类书籍中难以见到的。 《算法竞赛入门经典(2版)》可作为全国青少年信息学奥林匹克联赛(NOIP)复赛教材、全国青少年信息学奥林匹克竞赛(NOI)和ACM国际大学生程序设计竞赛(ACM/ICPC)的训练资料,也可作为IT工程师与科研人员的参考用书。
|
目錄:
|
□□部分 语言篇
□□章 程序设计入门
1.1 算术表达式
1.□ 变量及其输入
1.3 顺序结构程序设计
1.4 分支结构程序设计
1.5 注解与习题
1.5.1 C语言、C99、C11及其他
1.5.□ 数据类型与输入格式
1.5.3 习题
1.5.4 小结
第□章 循环结构程序设计
□.1 for循环
□.□ while循环和do-while循环
□.3 循环的代价
□.4 算法竞赛中的输入输出框架
□.5 注解与习题
□.5.1 习题
□.5.□ 小结
第3章 数组和字符串
3.1 数组
3.□ 字符数组
3.3 竞赛题目选讲
3.4 注解与习题
3.4.1 进位制与整数表示
3.4.□ 思考题
3.4.3 黑盒测试和在线评测系统
3.4.4 例题一览与习题
3.4.5 小结
第4章 函数和递归
4.1 自定义函数和结构体
4.□ 函数调用与参数传递
4.□.1 形参与实参
4.□.□ 调用栈
4.□.3 用指针作参数
4.□.4 初学者易犯的错误
4.□.5 数组作为参数和返回值
4.□.6 把函数作为函数的参数
4.3 递归
4.3.1 递归定义
4.3.□ 递归函数
4.3.3 C语言对递归的支持
4.3.4 段错误与栈溢出
4.4 竞赛题目选讲
4.5 注解与习题
4.5.1 头文件、副作用及其他
4.5.□ 例题一览和习题
4.5.3 小结
第5章 C 与STL入门
5.1 从C到C
5.1.1 C 版框架
5.1.□ 引用
5.1.3 字符串
5.1.4 再谈结构体
5.1.5 模板
5.□ STL初步
5.□.1 排序与检索
5.□.□ 不定长数组:vector
5.□.3 集合:set
5.□.4 映射:map
5.□.5 栈、队列与优先队列
5.□.6 测试STL
5.3 应用:大整数类
5.3.1 大整数类BigInteger
5.3.□ 四则运算
5.3.3 比较运算符
5.4 竞赛题目举例
5.5 习题
第□部分 基础篇
第6章 数据结构基础
6.1 再谈栈和队列
6.□ 链表
6.3 树和二叉树
6.3.1 二叉树的编号
6.3.□ 二叉树的层次遍历
6.3.3 二叉树的递归遍历
6.3.4 非二叉树
6.4 图
6.4.1 用DFS求连通块
6.4.□ 用BFS求□短路
6.4.3 拓扑排序
6.4.4 欧拉回路
6.5 竞赛题目选讲
6.6 训练参考
第7章 暴力求解法
7.1 简单枚举
7.□ 枚举排列
7.□.1 生成1~n的排列
7.□.□ 生成可重集的排列
7.□.3 解答树
7.□.4 下一个排列
7.3 子集生成
7.3.1 增量构造法
7.3.□ 位向量法
7.3.3 二进制法
7.4 回溯法
7.4.1 八皇后问题
7.4.□ 其他应用举例
7.5 路径寻找问题
7.6 迭代加深搜索
7.7 竞赛题目选讲
7.8 训练参考
第3部分 竞赛篇
第8章 高效算法设计
8.1 算法分析初步
8.1.1 渐进时间复杂度
8.1.□ 上界分析
8.1.3 分治法
8.1.4 正确对待算法分析结果
8.□ 再谈排序与检索
8.□.1 归并排序
8.□.□ 快速排序
8.□.3 二分查找
8.3 递归与分治
8.4 贪心法
8.4.1 背包相关问题
8.4.□ 区间相关问题
8.4.3 Huffman编码
8.5 算法设计与优化策略
8.6 竞赛题目选讲
8.7 训练参考
第9章 动态规划初步
9.1 数字三角形
9.1.1 问题描述与状态定义
9.1.□ 记忆化搜索与递推
9.□ DAG上的动态规划
9.□.1 DAG模型
9.□.□ □长路及其字典序
9.□.3 固定终点的□长路和□短路
9.□.4 小结与应用举例
9.3 多阶段决策问题
9.3.1 多段图的□短路
9.3.□ 0-1背包问题
9.4 更多经典模型
9.4.1 线性结构上的动态规划
9.4.□ 树上的动态规划
9.4.3 复杂状态的动态规划
9.5 竞赛题目选讲
9.6 训练参考
□□0章 数学概念与方法
10.1 数论初步
10.1.1 欧几里德算法和□□分解定理
10.1.□ Eratosthenes筛法
10.1.3 扩展欧几里德算法
10.1.4 同余与模算术
10.1.5 应用举例
10.□ 计数与概率基础
10.□.1 杨辉三角与二项式定理
10.□.□ 数论中的计数问题
10.□.3 编码与解码
10.□.4 离散概率初步
10.3 其他数学专题
10.3.1 递推
10.3.□ 数学期望
10.3.3 连续概率
10.4 竞赛题目选讲
10.5 训练参考
□□1章 图论模型与算法
11.1 再谈树
11.1.1 无根树转有根树
11.1.□ 表达式树
11.□ □小生成树
11.□.1 Kruskal算法
11.□.□ 竞赛题目选解
11.3 □短路问题
11.3.1 Dijkstra算法
11.3.□ Bellman-Ford算法
11.3.3 Floyd算法
11.3.4 竞赛题目选讲
11.4 网络流初步
11.4.1 □大流问题
11.4.□ 增广路算法
11.4.3 □小割□大流定理
11.4.4 □小费用□大流问题
11.4.5 应用举例
11.5 竞赛题目选讲
11.6 训练参考
11.7 总结与展望
□□□章 高级专题
1□.1 知识点选讲
1□.1.1 自动机
1□.1.□ 树的经典问题和方法
1□.1.3 可持久化数据结构
1□.1.4 多边形的布尔运算
1□.□ 难题选解
1□.□.1 数据结构
1□.□.□ 网络流
1□.□.3 数学
1□.□.4 几何
1□.□.5 非完美算法
1□.□.6 杂题选讲
1□.3 小结与习题
附录A 开发环境与方法
A.1 命令行
A.1.1 文件系统
A.1.□ 进程
A.1.3 程序的执行
A.1.4 重定向和管道
A.1.5 常见命令
A.□ 操作系统脚本编程入门
A.□.1 Windows下的批处理
A.□.□ Linux下的Bash脚本
A.□.3 再谈随机数
A.3 编译器和调试器
A.3.1 gcc的安装和测试
A.3.□ 常见编译选项
A.3.3 gdb简介
A.3.4 gdb的高级功能
A.4 浅谈IDE
主要参考书目
|
|