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

出版日期:2014-6-1
ISBN:9787302356289
作者:刘汝佳
页数:464页

内容概要

刘汝佳,1982年12月生,高中毕业于重庆市外国语学校。2000年3月获得NOI2000全国青少年信息学奥林匹克竞赛一等奖第四名,进入国家集训队,并因此保送到清华大学计算机科学与技术系。大一时获2001年ACM/ICPC国际大学生程序设计竞赛亚洲-上海赛区冠军和2002年世界总决赛银牌(世界第四),2005年获学士学位,2008年获硕士学位。
学生时代曾为中国计算机学会NOI科学委员会学生委员,担任IOI2002-2008中国国家队教练,并为NOI系列比赛命题十余道。现为NOI竞赛委员会委员,并在NOI 25周年时获得中国计算机学会颁发的“特别贡献奖”。
2004年至今共为ACM/ICPC亚洲赛区命题二十余道,担任6次裁判和2次命题总监,并应邀参加IOI和ACM/ICPC相关国际研讨会,发表论文两篇。
2004年初作为第一作者出版专著《算法艺术与信息学竞赛》,2009年出版译著《编程挑战》,2009年出版《算法竞赛入门经典》,2012年出版《算法竞赛入门经典——训练指南》。
多年来在全国二十余个城市进行中学生竞赛培训工作,为北京、上海、吉隆坡等地的著名高校授课与宣讲,并多次与TopCoder、百度和网易有道等知名企业合作举办比赛,让更多的IT人才获得展示自我的平台。

书籍目录

第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语言对递归的支持 75
4.3.4 段错误与栈溢出 77
4.4 竞赛题目选讲 79
4.5 注解与习题 92
4.5.1 头文件、副作用及其他 93
4.5.2 例题一览和习题 95
4.5.3 小结 99
第5章  C++与STL入门 100
5.1 从C到C++ 100
5.1.1 C++版框架 101
5.1.2 引用 102
5.1.3 字符串 103
5.1.4 再谈结构体 105
5.1.5 模板 106
5.2 STL初步 108
5.2.1 排序与检索 108
5.2.2 不定长数组:vector 109
5.2.3 集合:set 112
5.2.4 映射:map 113
5.2.5 栈、队列与优先队列 115
5.2.6 测试STL 120
5.3 应用:大整数类 123
5.3.1 大整数类BigInteger 124
5.3.2 四则运算 125
5.3.3 比较运算符 126
5.4 竞赛题目举例 127
5.5 习题 134
第2部分 基础篇
第6章 数据结构基础 139
6.1 再谈栈和队列 139
6.2 链表 143
6.3 树和二叉树 148
6.3.1 二叉树的编号 148
6.3.2 二叉树的层次遍历 150
6.3.3 二叉树的递归遍历 155
6.3.4 非二叉树 160
6.4 图 162
6.4.1 用DFS求连通块 162
6.4.2 用BFS求最短路 164
6.4.3 拓扑排序 167
6.4.4 欧拉回路 168
6.5 竞赛题目选讲 170
6.6 训练参考 175
第7章 暴力求解法 182
7.1 简单枚举 182
7.2 枚举排列 184
7.2.1 生成1~n的排列 184
7.2.2 生成可重集的排列 185
7.2.3 解答树 186
7.2.4 下一个排列 187
7.3 子集生成 188
7.3.1 增量构造法 188
7.3.2 位向量法 188
7.3.3 二进制法 189
7.4 回溯法 191
7.4.1 八皇后问题 191
7.4.2 其他应用举例 194
7.5 路径寻找问题 198
7.6 迭代加深搜索 206
7.7 竞赛题目选讲 209
7.8 训练参考 213
第3部分 竞赛篇
第8章 高效算法设计 220
8.1 算法分析初步 220
8.1.1 渐进时间复杂度 220
8.1.2 上界分析 222
8.1.3 分治法 223
8.1.4 正确对待算法分析结果 224
8.2 再谈排序与检索 225
8.2.1 归并排序 225
8.2.2 快速排序 227
8.2.3 二分查找 227
8.3 递归与分治 229
8.4 贪心法 231
8.4.1 背包相关问题 231
8.4.2 区间相关问题 232
8.4.3 Huffman编码 234
8.5 算法设计与优化策略 235
8.6 竞赛题目选讲 244
8.7 训练参考 252
第9章 动态规划初步 259
9.1 数字三角形 259
9.1.1 问题描述与状态定义 259
9.1.2 记忆化搜索与递推 260
9.2 DAG上的动态规划 262
9.2.1 DAG模型 262
9.2.2 最长路及其字典序 262
9.2.3 固定终点的最长路和最短路 264
9.2.4 小结与应用举例 267
9.3 多阶段决策问题 270
9.3.1 多段图的最短路 270
9.3.2 0-1背包问题 271
9.4 更多经典模型 274
9.4.1 线性结构上的动态规划 274
9.4.2 树上的动态规划 280
9.4.3 复杂状态的动态规划 284
9.5 竞赛题目选讲 290
9.6 训练参考 303
第10章 数学概念与方法 310
10.1 数论初步 310
10.1.1 欧几里德算法和唯一分解定理 310
10.1.2 Eratosthenes筛法 312
10.1.3 扩展欧几里德算法 313
10.1.4 同余与模算术 314
10.1.5 应用举例 316
10.2 计数与概率基础 318
10.2.1 杨辉三角与二项式定理 319
10.2.2 数论中的计数问题 321
10.2.3 编码与解码 323
10.2.4 离散概率初步 324
10.3 其他数学专题 327
10.3.1 递推 327
10.3.2 数学期望 332
10.3.3 连续概率 334
10.4 竞赛题目选讲 336
10.5 训练参考 341
第11章 图论模型与算法 352
11.1 再谈树 352
11.1.1 无根树转有根树 352
11.1.2 表达式树 353
11.2 最小生成树 355
11.2.1 Kruskal算法 356
11.2.2 竞赛题目选解 358
11.3 最短路问题 359
11.3.1 Dijkstra算法 359
11.3.2 Bellman-Ford算法 363
11.3.3 Floyd算法 364
11.3.4 竞赛题目选讲 365
11.4 网络流初步 366
11.4.1 最大流问题 366
11.4.2 增广路算法 367
11.4.3 最小割最大流定理 369
11.4.4 最小费用最大流问题 370
11.4.5 应用举例 372
11.5 竞赛题目选讲 375
11.6 训练参考 379
11.7 总结与展望 384
第12章 高级专题 386
12.1 知识点选讲 386
12.1.1 自动机 386
12.1.2 树的经典问题和方法 392
12.1.3 可持久化数据结构 397
12.1.4 多边形的布尔运算 399
12.2 难题选解 404
12.2.1 数据结构 404
12.2.2 网络流 409
12.2.3 数学 411
12.2.4 几何 415
12.2.5 非完美算法 419
12.2.6 杂题选讲 423
12.3 小结与习题 446
附录A 开发环境与方法 455
A.1 命令行 455
A.1.1 文件系统 455
A.1.2 进程 456
A.1.3 程序的执行 456
A.1.4 重定向和管道 457
A.1.5 常见命令 457
A.2 操作系统脚本编程入门 458
A.2.1 Windows下的批处理 458
A.2.2 Linux下的Bash脚本 459
A.2.3 再谈随机数 460
A.3 编译器和调试器 460
A.3.1 gcc的安装和测试 460
A.3.2 常见编译选项 461
A.3.3 gdb简介 462
A.3.4 gdb的高级功能 463
A.4 浅谈IDE 464
主要参考书目 465

作者简介

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


 算法竞赛入门经典(第2版)下载 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     刘汝佳大神的名声很广(据说他曾经发现RP和请客时长有关系?哈哈)。不过鄙人孤陋寡闻,在OI数N次碰壁后才看了他的书,顿时张了张姿势。不过,我决定还是要转战CLRS的。这本书写的很好,但是优缺点共有。下面先列一下优点:1、简单易懂,可谓是初学者的福音。2、算法程序写的非常清晰易懂。3、本书全面的阐述了OI中常用的知识。缺点:1、有的算法讲的不是那么清晰,只给了Program。2、最后的Hard(12章)大可不必加,也可以混到手册里。3、关于STL讲的比较粗略。不过,我个人还是非常推荐OI初学者啃这本书的~

精彩短评 (总计14条)

  •     嗯。不错的书。
  •     目前只看到第三章,习题比第一版的难多了。有的以为自己做出来了,到UVa上一试被虐哭。本来计划三个月搞定,突然发现11/12章中间隔着一本训练指南。而且3-11章190多道题以我目前的初学水平每题起码2小时,哭死了。重新定计划吧。
  •     非常棒非常棒,就是习题还是略难……算法真的太有意思了可惜我头脑笨但还有时间嘛~
  •     对于一个没有人指导,自学的人来说,这本书挺好,而且我觉得讲得还可以细致一点。有老师指导的话,这本书应该效果更好吧
  •     刘汝佳写的新书~~
  •     退坑
  •     看到这本书和第一版一样的分,表示无法理解。这本书的深度远远超过了第一版,第一版后面的不足也弥补了。学算法越久越佩服书上的代码。真的就是一种艺术。真心感谢刘汝佳的付出,这本书必须给赞
  •     只读不写没有任何意义。所以ACM竞赛对我来说太遥远。算大一的学习探索历程吧
  •     经典中的经典,不多谈!!!!
  •     入门来说是本好书
  •     这书是神作啊。。如此精炼又详细
  •     我的童年呀。
  •     代码的排版有点差,不过瑕不掩瑜。
  •     一句话概括就是面flag,bat必备红宝书!
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024