前言
入坑算法竞赛已经一年半了,在这期间也读了不少关于算法竞赛的书,这些书对我的帮助还是蛮大的。平时看题解多是个人零散的题解,很难以系统的去学习,认认真真的挑选1-2本书来阅读,无论是从思维能力还是文字表达能力都会得到提升,以下都是我自己读过的书进行一下分享,难度由浅入深,部分书籍浅尝而止。
入门:《啊哈!算法》
适合:总题量150以下初步掌握C语言的萌新
一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点,通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜游戏,在轻松愉悦中便掌握算法精髓,感受算法之美
这本书也是我的第一本入门书,读此书之前只需要掌握基本的C语言语法,这本书的内容对于小白来说是再好不过了,最最基础的算法书中都有所提及,是很好读的一本书。书中的代码大多都有注解,同时教导了数据结构、图论等内容。
初级:《挑战程序设计竞赛》
适合:总题量300左右掌握一点算法思想(至第三章DP)
世界顶级程序设计高手的经验总结【ACM-ICPC全球总冠军】巫泽俊主译,本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。
这本书前面的准备篇主要讲述的是算法竞赛的历史以及oj的使用方法。初级篇难度与《啊哈!算法》差不多,较为适合小白阅读。等到中级篇就开始教导高级数据结构如线段树,稍难一点的图论:网络流、二分图、以及计算几何的内容,到了这一步难度已经不能算初级了。再到高级篇涉及的内容:数论、强连通分量、高级搜索、分治、字符串算法等进阶内容。总体而言书中的曲线并不太平滑,初级阶段的同学建议读到中级篇的DP,后续的内容可以等有机会再补。
中级: 《程序设计中常用的计算思维方式》
适合:总题量500,有一定题量的基础再看这本书会有豁朗开朗的感觉
本书主要介绍了大赛程序设计中的常用思维方式, 主要包括正确认识和处理整体与部分的关系、构造性思维、目标转化的思想、分类与分治思想、逆向思维、猜想与试验六个章节, 旨在引导参赛学生学习并掌握编程解题的一般思维方法和过程, 提高解题能力。
锻炼思维不可多得的一本好书,系统地讲述了面临一道题目时该如何思考,唯一的不足是书中的编程语言并非使用的C、Java等常见的语言,但是有一点程序设计基础也能够读懂,这本书的价值一时间难以用言语描述,十分推荐大家一读。
中级: 《算法竞赛入门经典》
适合:1.语法入门2.掌握基本数据结构知识
算法竞赛入门经典》是一本算法竞赛的入门教材,把C/C++语言、算法和解题有机地结合在了一起,淡化理论,注重学习方法和实践技巧。全书内容分为11章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、基础题目选解、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法,覆盖了算法竞赛入门所需的主要知识点,并附有大量习题。书中的代码规范、简洁、易懂,不仅能帮助读者理解算法原理,还能教会读者很多实用的编程技巧。另外,书中包含的各种开发、测试和调试技巧也是在传统的语言、算法类书籍中难以见到的。
该书分为三部分《语言篇》《基础篇》《竞赛篇》
语言篇推荐第一类人群学习,可以借用这本书来进行小小的入门,其中的例题难度是非常巨大,但是认认真真的完成书中布置的任务,阅读书中源码一定会有很大的收获。书中的一大特点就是留给读者巨大的思考空间,不会轻易给出答案。所以在阅读本书时请静下心来认真思考,这并不是一本阅读起来十分轻松的书籍,草草读过会发现啥也看不懂。
高级:《算法竞赛入门经典训练指南》
是《算法竞赛入门经典》的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,并且用大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。本书共6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型和更多算法专题,全书通过近200道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式以及程序实现的常见方法和技巧,并在章末和附录中给出了丰富的分类习题,供读者查漏补缺和强化学习效果。
一个字:题,刷不完的题,还没读完大家一起加油
高级:《算法竞赛进阶指南》
本书主要根据CCF-NOI信息学奥林匹克竞赛涉及的知识体系进行编写,对计算机程序设计的基本技能——数据结构与算法进行了深入的讲解。
本书面向已经掌握至少一门程序设计语言、对于算法设计有入门性认识的读者,以各类知识点之间的贯穿联系为主线,通过各种模型与例题对各种思维方向进行深入引导,让读者在阅读本书后对算法设计初步具有整体掌控性的理解。能够让读者由浅入深地体会算法,学习算法。
本书融合了作者在算法设计教育领域、算法竞赛参赛与指导领域10年来的一线经验,其特色是训练读者算法设计的思维习惯,而非对知识流水的记忆性诵读,能让认真阅读本书并完成所有练习的读者,逐渐具有NOIP竞赛一等奖以上的实力。
AcWing高级篇与进阶篇上面大部分例题选自于此,书中一些证明给的很好,业内广泛好评的一本书。
其它(待读)
还有很多好书没有读过,这里列举一些听过但是没去看的书
《信息学奥赛一本通》
《算法导论》
大名顶顶的难书
算法导论》(Introduction to Algorithms)是麻省理工学院出版社出版的关于计算机中数据结构与算法的图书,作者是托马斯·科尔曼(Thomas H. Cormen)、查尔斯·雷瑟尔森(Charles E. Leiserson)、罗纳德·李维斯特(Ronald L. Rivest)、克利福德·斯坦(Clifford Stein)。第一版刊行于1990年,2009年最新版为第三版
《算法艺术与信息学竞赛》
本书由刘汝佳、黄亮编著,由清华大学出版社出版。本书较为系统和全面地介绍了算法学最基本的知识。这些知识和技巧既是高等院校“算法与数据结构”课程的主要内容,也是国际青少年信息学奥林匹克(IOI)竞赛和ACM/ICPC国际大学生程序设计竞赛中所需要的。书中分析了相当数量的问题。本书共3章。第1章介绍算法与数据结构;第2章介绍数学知识和方法;第3章介绍计算机几何。全书内容丰富,分析透彻,启发性强,既适合读者自学,也适合于课堂讲授。 本书适用于各个层次的信息学爱好者、参赛选手、辅导老师和高等院校计算机专业的师生。本书既是信息学入门和提高的好帮手,也是一本内容丰富、新颖的资料集。