本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。
世界程序设计高手的经验总结
[ACM-ICPC全球总冠军]巫泽俊主译
日本ACM-ICPC参赛者人手一册
《挑战程序设计竞赛(第2版)》对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。
秋叶拓哉
Google Code Jam 2010 第9名
ACM-ICPC World Finals 2012 第11名
TopCoder Open 2012 Algorithm 第4名
昵称iwi
岩田阳一
Google Code Jam 2009 第3名
TopCoder Open 2010 Marathon 冠军
IPSC 2010 个人组 冠军
昵称wata
北川宜稔
ACM-ICPC World Finals 2010第16名
昵称kita_masa
译者简介:
巫泽俊
ACM-ICPC World Finals 2009 第6名
ACM-ICPC World Finals 2011 冠军
Google Code Jam 2012 第7名
昵称watashi和rejudge
庄俊元
ACM-ICPC Asia Phuket Regional 2011 冠军
2012年跻身ACM-ICPC World Finals以及百度Astar总决赛
昵称navi和navimoe
李津羽
浙江大学2011级计算机系博士生
在浙大CAD&CG实验室从事科研工作
第1章 蓄势待发--准备篇
1.1 何谓程序设计竞赛
1.2 最负盛名的程序设计竞赛
1.2.1 世界规模的大赛--Google Code Jam(GCJ)
1.2.2 向高排名看齐!--TopCoder
1.2.3 历史最悠久的竞赛-- ACM-ICPC
1.2.4 面向中学生的信息学奥林匹克竞赛--JOI-IOI
1.2.5 通过网络自动评测--Online Judge(OJ)
1.3 本书的使用方法
1.3.1 本书所涉及的内容
1.3.2 所用的编程语言
1.3.3 题目描述的处理
1.3.4 程序结构
1.3.5 练习题第1章 蓄势待发--准备篇
1.1 何谓程序设计竞赛
1.2 最负盛名的程序设计竞赛
1.2.1 世界规模的大赛--Google Code Jam(GCJ)
1.2.2 向高排名看齐!--TopCoder
1.2.3 历史最悠久的竞赛-- ACM-ICPC
1.2.4 面向中学生的信息学奥林匹克竞赛--JOI-IOI
1.2.5 通过网络自动评测--Online Judge(OJ)
1.3 本书的使用方法
1.3.1 本书所涉及的内容
1.3.2 所用的编程语言
1.3.3 题目描述的处理
1.3.4 程序结构
1.3.5 练习题
1.3.6 读透本书后更上一层楼的练习方法
1.4 如何提交解答
1.4.1 POJ的提交方法
1.4.2 GCJ的提交方法
1.5 以高效的算法为目标
1.5.1 什么是复杂度
1.5.2 关于运行时间
1.6 轻松热身
1.6.1 先从简单题开始
1.6.2 POJ的题目Ants
1.6.3 难度增加的抽签问题
第2章 初出茅庐--初级篇
2.1 最基础的“穷竭搜索”
2.1.1 递归函数
2.1.2 栈
2.1.3 队列
2.1.4 深度优先搜索
2.1.5 宽度优先搜索
2.1.6 特殊状态的枚举
2.1.7 剪枝
2.2 一往直前!贪心法
2.2.1 硬币问题
2.2.2 区间问题
2.2.3 字典序最小问题
2.2.4 其他例题
2.3 记录结果再利用的“动态规划”
2.3.1 记忆化搜索与动态规划
2.3.2 进一步探讨递推关系
2.3.3 有关计数问题的DP
2.4 加工并存储数据的数据结构
2.4.1 树和二叉树
2.4.2 优先队列和堆
2.4.3 二叉搜索树
2.4.4 并查集
2.5 它们其实都是“图”
2.5.1 图是什么
2.5.2 图的表示
2.5.3 图的搜索
2.5.4 最短路问题
2.5.5 最小生成树
2.5.6 应用问题
2.6 数学问题的解题窍门
2.6.1 辗转相除法
2.6.2 有关素数的基础算法
2.6.3 模运算
2.6.4 快速幂运算
2.7 一起来挑战GCJ的题目(1)
2.7.1 Minimum Scalar Product
2.7.2 Crazy Rows
2.7.3 Bribe the Prisoners
2.7.4 Millionaire
第3章 出类拔萃--中级篇
3.1 不光是查找值!“二分搜索”
3.1.1 从有序数组中查找某个值
3.1.2 假定一个解并判断是否可行
3.1.3 较大化最小值
3.1.4 较大化平均值
3.2 常用技巧精选(一)
3.2.1 尺取法
3.2.2 反转(开关问题)
3.2.3 弹性碰撞
3.2.4 折半枚举(双向搜索)
3.2.5 坐标离散化
3.3 活用各种数据结构
3.3.1 线段树
3.3.2 Binary Indexed Tree
3.3.3 分桶法和平方分割
3.4 熟练掌握动态规划
3.4.1 状态压缩DP
3.4.2 矩阵的幂
3.4.3 利用数据结构高效求解
3.5 借助水流解决问题的网络流
3.5.1 较大流
3.5.2 最小割
3.5.3 二分图匹配
3.5.4 一般图匹配
3.5.5 匹配、边覆盖、独立集和顶点覆盖
3.5.6 最小费用流
3.5.7 应用问题
3.6 与平面和空间打交道的计算几何
3.6.1 计算几何基础
3.6.2 极限情况
3.6.3 平面扫描
3.6.4 凸包
3.6.5 数值积分
3.7 一起来挑战GCJ的题目(2)
3.7.1 Numbers
3.7.2 No Cheating
3.7.3 Stock Charts
3.7.4 Watering Plants
3.7.5 Number Sets
3.7.6 Wi-fi Towers
第4章 登峰造极--高级篇
4.1 更加复杂的数学问题
4.1.1 矩阵
4.1.2 模运算的世界
4.1.3 计数
4.1.4 具有对称性的计数
4.2 找出游戏的必胜策略
4.2.1 游戏与必胜策略
4.2.2 Nim
4.2.3 Grundy数
4.3 成为图论大师之路
4.3.1 强连通分量分解
4.3.2 2-SAT
4.3.3 LCA
4.4 常用技巧精选(二)
4.4.1 栈的运用
4.4.2 双端队列的运用
4.4.3 倍增法
4.5 开动脑筋智慧搜索
4.5.1 剪枝
4.5.2 A与IDA
4.6 划分、解决、合并:分治法
4.6.1 数列上的分治法
4.6.2 树上的分治法
4.6.3 平面上的分治法
4.7 华丽地处理字符串
4.7.1 字符串上的动态规划算法
4.7.2 字符串匹配
4.7.3 后缀数组
4.8 一起来挑战GCJ的题目(3)
4.8.1 Mine Layer
4.8.2 Year of More Code Jam
4.8.3 Football Team
4.8.4 Endless Knight
4.8.5 The Year of Code Jam
本书中未涉及的拓展主题
书中例题列表
参考文献
如今,形形色色的程序设计竞赛层出不穷,听说过Google CodeJam、TopCoder、ACM-ICPC的读者恐怕不在少数。本书要介绍的正是这类以在规定时间内、又快又准地解决尽可能多的题目为目标的程序设计竞赛。
程序设计竞赛内涵丰富,即便是经验老道的程序员,要想在比赛中取得好成绩也绝非易事。要在程序设计竞赛中取胜,不仅需要运用灵活的想象和丰富的知识得出正确的算法,还需要一气呵成地实现并调试通过。
另一方面,程序设计竞赛对新手而言亦非遥不可及。为了让更多的参赛选手体会到比赛的乐趣,大多数比赛都会准备若干面向初学者的题目。另外,即便未能在比赛中取得好成绩,通过比赛,也能够使自己的能力得到有效的锻炼。最重要的是,大家能够享受到激烈的比赛带来的乐趣。
本书的作者们参加过众多程序设计竞赛,在平时的练习和学习中,也获得了各种各样的知识与技巧,本书将这些知识技巧总结成册,主要介绍算法及其在相关问题中的应用。本书依照由易及难的顺序对问题进行讲解,章节的编排也参考了主题的难易程度及其相互的联系,内容较多的主题则按难易程度划分为多个子主题分别介绍。各个主题由算法介绍和例题讲解穿插而成。
只要是具有编程基础知识的读者,均适合阅读本书。书中的源代码均用C 实现,不过只用到了其基本功能,所以即便读者不熟悉C 也不影响阅读。
[关于再版]
令人惊喜的是,本书的第1版受到了广大读者的高度评价,在此表示感谢。特别是一些并不热衷于程序设计竞赛的读者也购买了本书。这是因为通过本书不仅可以学到算法,更能学到其设计和运用的思想。这正是本书划时代的亮点。
本书第2版追加了计算几何、搜索减枝、分治法和字符串相关算法4个主题。此外还追加了方便读者加深理解的练习题,并为学有余力的读者列出了书中未涉及的拓展主题,进一步丰富了本书内容。
……
发货速度特别快,12小时左右就收货了,里面内容是C++写的,目前很满意!
确定是本好书 最近在看算法导论当练习辅导书看也是很不错
很好的一本书,确实是世界顶级程序设计高手的经验之作。
内容赞,排版一般就代码缩进而言,是我不喜欢的两格缩进
绝对的好书。非常适合ACM入门选手来扩充知识面。不过较高级一些的选手就可以忽略掉这本书啦,。
孩子看了,说内容很好。图灵程序设计这个系列都是优质好书,值得购买。
算法导论?太深奥了。所以还是让这本书给初入行的学学算法吧,对大公司应聘也有好处的。
题目很好,讲解比较简洁,跟着这个书刷题比较好
书中的很多算法还是很具有挑战性的,不论是作为竞赛还是面试都会很有帮主的
非常好,即使是日本人写的,也顶起,只是难度稍高
刚收到 感觉还不错 !粗略翻了一下里面算法都是用C/c++实现不错 不错
打开快递书上有好多类似胶的东西,不过能刮去。。还是不爽
书里面的解题思路很赞,代码实现简洁优美,比较适合新手学习算法(电子版的全文看过,忍不住买了一本,真心好书)。
这书对于新手来说还是不错的,可以在看代码的时候慢慢地学习到高手的思维模式,这是好事,至于对于大牛来说这书如何,我就不敢说太多了,毕竟我太弱了、
内容比较详实。但比较注重算法,对数据结构的介绍相对较少。
编程总体上是一门实践,多看还有多做,多做还要多总结。所以本书可以看做一本习题册,身旁需要常备一天笔记本(最好是Air)。
总体感觉可以,比算法竞赛那个实例要多,算法竞赛那个干讲理论没什么实际意义,不如对应例子讲解学习编程技巧。
用来参加程序设计大赛的,得多研究,很好的参考书,希望此类书越来越多。
总体很满意,不过封面磨损有些严重,应该是递送时造成的,内容详实,好评
很喜欢的一本书,学习算法很好,大学就想买了,现在工作了还是买了,对于提高程序思维很有帮助,还有当当发货速度很赞
算法经典必备书,书的质感摸起来很好也有塑封,当当打折买的,活动很给力,好评!
本书是一本算法的基础书,配套了在线oj,适合用来学习,很有参考性
不错,就是不是很建议初学者入手,比较有难度,小白还是去看我的第一本编程书或者教材先学会基本算法语言比较好,本书内容挺有启发的,不错
挑战程序设计竞赛 (第2版)【程序设计高手的经验总结,学习一下!
不得不说,第一次在网上买书就这么好的效果,绝对给当当五星好评啊,昨天上午买的书,第二天上午11点就到了,快递快的没得说,第一次从网上买东西发货这么快,当当6啊,在说一下这本书的质量,绝对没得说,不管是纸的厚度,还是印刷质量绝对好啊,书也没有什么味道,第一次买书,太满意了,以后就在当当买书了
这本书最大的好处是,将不同的算法和例题按专题编排成小节,再将不同的小节由易到难分成四章,这样即便是我孩子这种初出茅庐的新手也不会有太大的障碍。所以,很赞。
书中按算法专题编排章节,每一章都以例题为中心进行算法的讲解、具体问题的分析,例题比较丰富,而且循序渐进由简到难。书中基本没有《算法导论》里的各种复杂度分析和数学证明,主要是着眼于例题的讲解,我觉得比较适合有一定编程基础的同学。