东南大学c++非电类期末试卷 程序设计与算法语言,挑战程序设计竞赛2:算法和数据结构 中文完整pdf版[55MB] 附源码...

《挑战程序设计竞赛2:算法和数据结构》分为准备篇、基础篇和应用篇三大部分,借助在线评测系统Aizu Online Judge以及大量例题,详细讲解了算法与复杂度、初等和高等排序、搜索、递归和分治法、动态规划法、二叉搜索树、堆、图、计算几何学、数论等与程序设计竞赛相关的算法和数据结构,既可以作为挑战程序设计竞赛的参考书,也可以用来引导初学者系统学习算法和数据结构的基础知识。本书适合所有程序设计人员、程序设计竞赛爱好者以及高校计算机专业师生阅读。

目录

第1部分 [准备篇]攻克程序设计竞赛的学习方法 1

第1章 有效运用在线评测系统 3

1.1 攻克程序设计竞赛的学习方法 3

1.2 什么是在线评测 7

1.3 用户注册 9

1.4 浏览问题 10

1.5 解答问题 12

1.6 个人页面 18

1.7 如何运用本书 19

第2部分 [基础篇]为程序设计竞赛做准备的算法与数据结构 21

第2章 算法与复杂度 23

2.1 算法是什么 23

2.2 问题与算法示例 23

2.3 伪代码 25

2.4 算法的效率 26

2.5 入门问题 28

第3章 初等排序 33

3.1 挑战问题之前——排序 33

3.2 插入排序法 35

3.3 冒泡排序法 40

3.4 选择排序法 44

3.5 稳定排序 48

3.6 希尔排序法 52

第4章 数据结构 57

4.1 挑战问题之前——什么是数据结构 57

4.2 栈 59

4.3 队列 64

4.4 链表 70

4.5 标准库的数据结构 77

4.6 数据结构的应用——计算面积 86

第5章 搜索 89

5.1 挑战问题之前——搜索 89

5.2 线性搜索 91

5.3 二分搜索 94

5.4 散列法 98

5.5 借助标准库搜索 102

5.6 搜索的应用——计算最优解 106

第6章 递归和分治法 109

6.1 挑战问题之前——递归与分治 109

6.2 穷举搜索 111

6.3 科赫曲线 114

第7章 高等排序 119

7.1 归并排序 120

7.2 分割 125

7.3 快速排序 129

7.4 计数排序 133

7.5 利用标准库排序 137

7.6 逆序数 139

7.7 最小成本排序 143

第8章 树 147

8.1 挑战问题之前——树结构 148

8.2 有根树的表达 150

8.3 二叉树的表达 154

8.4 树的遍历 159

8.5 树遍历的应用——树的重建 163

第9章 二叉搜索树 167

9.1 挑战问题之前——二叉搜索树 168

9.2 二叉搜索树——插入 169

9.3 二叉搜索树——搜索 174

9.4 二叉搜索树——删除 177

9.5 通过标准库管理集合 182

第10章 堆 189

10.1 挑战问题之前——堆 190

10.2 完全二叉树 191

10.3 最大/最小堆 193

10.4 优先级队列 197

10.5 通过标准库实现优先级队列 201

第11章 动态规划法 203

11.1 挑战问题之前——动态规划法的概念 203

11.2 斐波那契数列 204

11.3 最长公共子序列 208

11.4 矩阵链乘法 211

第12章 图 217

12.1 挑战问题之前——图 218

12.2 图的表示 221

12.3 深度优先搜索 224

12.4 广度优先搜索 232

12.5 连通分量 237

第13章 加权图 241

13.1 挑战问题之前——加权图 242

13.2 最小生成树 244

13.3 单源最短路径 249

第3部分 [应用篇]程序设计竞赛的必备程序库 261

第14章 高等数据结构 263

14.1 互质的集合 264

14.2 范围搜索 269

14.3 其他问题 278

第15章 高等图算法 279

15.1 所有点对间最短路径 280

15.2 拓扑排序 284

15.3 关节点 290

15.4 树的直径 295

15.5 最小生成树 299

15.6 其他问题 303

第16章 计算几何学 305

16.1 几何对象的基本元素与表现 306

16.2 直线的正交/平行判定 312

16.3 投影 314

16.4 映象 316

16.5 距离 317

16.6 逆时针方向 321

16.7 判断线段相交 324

16.8 线段的交点 326

16.9 圆与直线的交点 328

16.10 圆与圆的交点 331

16.11 点的内包 333

16.12 凸包 335

16.13 线段相交问题 339

16.14 其他问题 343

第17章 动态规划法 345

17.1 硬币问题 346

17.2 背包问题 349

17.3 最长递增子序列 353

17.4 最大正方形 357

17.5 最大长方形 360

17.6 其他问题 364

第18章 数论 367

18.1 质数检验 368

18.2 最大公约数 372

18.3 幂乘 376

18.4 其他问题 378

第19章 启发式搜索 381

19.1 八皇后问题 382

19.2 九宫格拼图 386

19.3 十六格拼图 391

附录 399

通过本书可以获得的技能 400

挑战以往的程序设计竞赛真题! 402

参考文献 404

d169813e6fe41f286e52590598a38a19.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
世界顶级程序设计高手的经验总结 【ACM-ICPC全球总冠军】巫泽俊主译 日本ACM-ICPC参赛者人手一册 本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后有习题,供读者练习,巩固所学。 本书适合程序设计人员、程序设计竞赛爱好者以及高校计算机专业师生阅读。 目录 · · · · · · 译者序 前言 第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 阅读 本书中未涉及的拓展主题 书中例题列表 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值