首页 > 图书中心 >图书详情

算法竞赛入门经典(第2版)

该书程序源代码所在网址:https://github.com/aoapc-book/aoapc-bac2nd 网址上的资源会不断更新,请需要者保持关注。

作者:刘汝佳
定价:49.80
印次:2-19
ISBN:9787302356288
出版日期:2014.06.01
印刷日期:2019.10.22

本书是一本算法竞赛的入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。全书内容分为12 章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、C++与STL入门、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法、高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量例题和习题。书中的代码规范、简洁、易懂,不仅能帮助读者理解算法原理,还能教会读者很多实用的编程技巧;书中包含的各种开发、测试和调试技巧也是传统的语言、算法类书籍中难以见到的。 本书可作为全国青少年信息学奥林匹克联赛(NOIP)复赛教材、全国青少年信息学奥林匹克竞赛(NOI)和ACM国际大学生程序设计竞赛(ACM/ICPC)的训练资料,也可作为IT工程师与科研人员的参考用书。

more >

第2版前言 《算法竞赛入门经典》第1版出版至今已有四个年头。这四年间发生了很多变化,如NOI系列比赛终于对STL“解禁”,如C11和C++11标准出台,g++编译器升级(直接导致本书第1版中官方使用的<?和>?运算符无法编译通过),如《算法竞赛入门经典——训练指南》的出版弥补了本书第1版的很多缺憾,再如ACM/ICPC的蓬勃发展,使更多的大学生了解并参与到了算法竞赛中来…… 看来,是时候给本书“升级”了。 主要的变化 我原本打算只是增加一章专门介绍C++和STL,用符合新语言规范的方式重写部分代码,顺便增加一些例题和习题,没想到一写就是100页——几乎让书的篇幅翻了一倍。写作第1版时,220页的篇幅是和诸位一线中学教师商量后定下来的,因为书太厚会让初学者望而生畏。不过这几年的读者反馈让我意识到:由于篇幅限制,太多的东西让读者意犹未尽,还不如多写点。虽然之后出版了《算法竞赛入门经典——训练指南》,但那本书的主要目标是补充知识点,即拓展知识宽度,而我更希望在知识宽度几乎不变的情况下增加深度——我眼中的竞赛应该主要比思维和实践能力,而不是主要比见识。 索性,我继续加大篇幅,用大量的例子(包括题目和代码)来表现我想向读者传达的信息。一位试读的朋友在收到第一份书稿片段时惊呼:“题目的质量比第1版提高太多了!”这正是我这次改版的主要目的。 具体来说,这次改版有以下变化: ? 在前4章中逐步介绍一些更实用的语言技巧,直接使用竞赛题目作为例子。 ? 全新的第5章,讲解竞赛中最常用的C++语法,包括STL算法和容器。 ? 第6~7章作为基础篇,加大代码和技巧的比例,并适当增加例题。 ? 第8~11章作为中级篇,增加了各种例题,着重锻炼思维能力。 ? 全新的第12章作为高级篇,在《算法竞赛入门经典——训练指南》的基础上补充少量知识点与大量精彩例题。 需要特别说明的是第12章出现的原因。这一章的内容很难,而且要求读者熟练掌握《算法竞赛入门经典——训练指南》的主要内容,看起来和“入门”二字是矛盾的。其实本书虽然名为“入门经典”,实际上却不仅只适合入门读者。根据这几年读者反馈的情况来看,有相当数量的有经验的选手也购买了本书。原因在于:很多有经验的选手属于“自学成才”,总觉得自己可能会漏掉点什么基础知识。事实也是如此:本书中提到的很多代码和分析技巧是传统教科书中见不到的,对于很多有经验的选手来说也是“新鲜事物”,并且他们能比初学者更快、更好地把这些知识运用到比赛中去。本书第12章就是为这些读者准备的。如果这样解释还不够直观,就把第12章作为一个游戏里通关后多出来的Hard模式吧! 阅读说明 既然内容有了较大变化,阅读方式也需要再次说明一下。首先,和本书第1版一样,本书最好是有人带着学习,如老师、教练或者学长。随着网络的发展,这个条件越来越容易满足了——就算是没人指导,也可以在别人的博客中留言,或者在贴吧中寻求帮助。 一定要重视书中的“提示”。书中有很多“提示”部分都是非常重要的知识点或者技巧,有些提示看似平凡无奇,但如果没有引起重视而导致赛场上丢分,可是会追悔莫及的。 接下来是关于新增第5章的。首先声明一点,这一章并不是C++语言速成——C++语言是不可能速成的。这一章不是说你从头读到尾然后就掌握C++了,而是提供一个纲要,告诉你哪些东西是算法竞赛中最常用的,以及这些东西应当如何使用。你可以先另外找一本书(或者阅读网上的文章)学习C++,然后再看本书第5章(目的是把那些又容易晕又不那么有用的知识从脑子里删除),也可以直接看本书第5章,每次遇到看不懂或者觉得不够详细的地方,再找其他参考书来学。顺便说一句,就算你已经非常熟悉C++了,也最好浏览一下第5章(特别是代码!)。这不会花费太多时间,但很可能学到有用的东西。 忍不住再说点题外话。有时学习算法的最好方法并不是编写程序,而是手算。“手算”这个词听上去有点枯燥,改成“玩游戏”如何?如《雷顿教授与不可思议的小镇》就是一个不错的选择——它包含了过河问题(谜题7、93)、找砝码(谜题6、131)、一笔画(谜题30、39)、n皇后(谜题80~83,130)、倒水问题(谜题23、24、78)、幻方(谜题95)、华容道(谜题97、132、135)等诸多经典问题。 致谢 虽然多出来了200多页,其实本书的改版工作并没有花费太长时间(不到半年),在此期间也没有麻烦太多朋友读稿和讨论。参与本书第2版读稿和校对工作的几位朋友分别是:陈锋(第8~11章)、王玉斌(第8~9章,第12章)、郭云镝(第12章)、曹海宇(第5章、第9章)、陈立杰(第12章)、叶子卿(第12章)、周以凡(第12章)。 感谢给我发邮件以及在googlecode的wiki中留言指出本书第1版勘误的网友们:imxivid、zr95.vip、李智维、王玉、chnln0526、yszhou4tech、metowolf88、zhongying822、chong97993、tplee923、wtx20074587、chu.pang等,你们的支持和鼓励是我写作的重要动力。 另外,书中部分难题的题解离不开以下朋友的赐教和讨论:Md.Mahbubul Hasan、Shahriar Manzoor、Derek Kisman、Per Austrin、Luis Garcia、顾昱洲、陈立杰、张培超等。 第2版的习题全部(这次不仅仅是“主要”了)来自UVa在线评测系统,感谢Miguel Revilla教授、他的儿子Miguel Jr.和Carlos M. Casas Cuadrado对本书的大力支持。 最后,再次感谢清华大学出版社的朱英彪编辑在这个恰当的时机提出改版事宜,并容忍我把交稿时间一拖再拖。希望这次改版不会让你失望。 刘汝佳

more >
扫描二维码
下载APP了解更多

同系列产品more >

算法竞赛入门经典——习题与解答

陈锋
定 价:69.80元

查看详情
算法竞赛入门经典——训练指南

刘汝佳、陈锋
定 价:52.80元

查看详情
算法竞赛入门经典

刘汝佳
定 价:24元

查看详情
图书分类全部图书
more >
  • 第1部分语言篇

    第1章程序设计入门 1

    1.1 算术表达式 1

    1.2 变量及其输入 3

    1.3 顺序结构程序设计 6

    1.4 分支结构程序设计 9

    1.5 注解与习题 13

    1.5.1 C语言、C99、C11及其他 13

    1.5.2 数据类型与输入格式 14

    1.5.3 习题 15

    1.5.4 小结 16

    第2章循环结构程序设计 18

    2.1 for循环 18

    2.2 while循环和do-while循环 22

    2.3 循环的代价 25

    2.4 算法竞赛中的输入输出框架 27

    2.5 注解与习题 34

    2.5.1 习题 34

    2.5.2 小结 36

    第3章数组和字符串 37

    3.1 数组 37

    3.2 字符数组 41

    3.3 竞赛题目选讲 45

    3.4 注解与习题 53

    3.4.1 进位制与整数表示 54

    3.4.2 思考题 55

    3.4.3 黑盒测试和在线评测系统 55

    3.4.4 例题一览与习题 56

    3.4.5 小结 59

    第4章函数和递归 61

    4.1 自定义函数和结构体 61

    4.2 函数调用与参数传递 65

    4.2.1 形参与实参 65

    4.2.2 调用栈 66

    4.2.3 用指针作参数 69

    4.2.4 初学者易犯的错误 71

    4.2.5 数组作为参数和返回值 71

    4.2.6 把函数作为函数的参数 73

    4.3 递归 74

    4.3.1 递归定义 74

    4.3.2 递归函数 75

    4.3.3 C语言对递归的支...

版本展示

精彩书评more >

标题

评论

版权所有(C)2019 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802013248号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘