《挑战编程 程序设计竞赛训练手册》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)斯基纳,(西)雷维拉著;刘汝佳译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302197973
  • 页数:302 页
图书介绍:本书分为14章,分别介绍在线评测系统的基本使用方法、数据结构、字符串、排序、算数与代数、组合数学、数论、回溯法等等,并在附录中介绍了一些著名的程序设计竞赛以及相应的备赛建议与比赛技巧。

第1章 入门 1

1.1 初识自动评测系统 1

1.1.1 评测系统反馈 1

1.2 挑选你的武器 3

1.2.1 程序设计语言 3

1.2.2 如何阅读本书的程序 4

1.2.3 标准输入输出 5

1.3 编程提示 6

1.4 基本数据类型 8

1.5 关于习题 10

1.6 习题 11

1.6.1 3n+1问题(3n+1 Problem) 11

1.6.2 扫雷(Minesweeper) 12

1.6.3 旅行(The Trip) 13

1.6.4 液晶显示屏(LC-Display) 14

1.6.5 图形化编辑器(Graphical Editor) 15

1.6.6 解释器(Interpreter) 16

1.6.7 将军(Check the Check) 17

1.6.8 澳大利亚投票(Australian Voting) 19

1.7 提示 20

1.8 注解 20

第2章 数据结构 22

2.1 基本数据结构 22

2.1.1 栈 22

2.1.2 队列 23

2.1.3 字典 25

2.1.4 优先队列 26

2.1.5 集合 26

2.2 库函数 27

2.2.1 C++标准模板库 27

2.3 程序设计实例:纸牌大战 28

2.4 准备行动 29

2.5 字符串输入输出 30

2.6 赢得战争 32

2.7 测试与调试 33

2.8 习题 35

2.8.1 快乐的跳跃者(Jolly Jumper) 35

2.8.2 扑克牌型(Poker Hands) 35

2.8.3 罢工(Hartals) 36

2.8.4 解密(Crypt Kicker) 37

2.8.5 完美洗牌术(Stack'em Up) 38

2.8.6 Erd?s数(Erd?s Numbers) 41

2.8.7 比赛记分板(Contest Scoreboard) 42

2.8.8 Yahtzee游戏(Yahtzee) 43

2.9 习题 45

2.10 注解 45

第3章 字符串 47

3.1 字符编码 47

3.2 字符串的表示 49

3.3 程序设计实例:公司更名 49

3.4 模式查找 51

3.5 字符串操作 52

3.6 程序的完成 54

3.7 字符串库函数 54

3.8 习题 56

3.8.1 WERTYU键盘(WERTYU) 56

3.8.2 寻找单词(Where's Waldorf?) 57

3.8.3 公共排列(Common Permutation) 58

3.8.4 解密Ⅱ(Crypt Kicker Ⅱ) 59

3.8.5 自动评测脚本(Automated Judge Script) 60

3.8.6 文件碎片(File Fragmentation) 62

3.8.7 Doublet序列(Doublets) 63

3.8.8 Fmt程序(Fmt) 63

3.9 提示 65

3.10 注解 65

第4章 排序 66

4.1 排序的应用 66

4.2 排序算法 67

4.3 程序设计举例:给绅士排名 69

4.4 与排序相关的库函数 71

4.5 给绅士排名 72

4.6 习题 75

4.6.1 Vito家族(Vito's Family) 75

4.6.2 煎饼堆(Stacks of Flapjacks) 75

4.6.3 过桥(Bridge) 76

4.6.4 最长打盹时间(Longest Nap) 77

4.6.5 鞋匠的烦恼(Shoemaker's Problem) 79

4.6.6 CDVII高速公路(CDVII) 80

4.6.7 龟壳排序(ShellSort) 81

4.6.8 足球(Football(aka Soccer)) 82

4.7 提示 84

4.8 注解 85

第5章 算术与代数 86

5.1 机器算术 86

5.1.1 整数库函数 86

5.2 高精度整数 87

5.3 高精度算术 88

5.4 进制及其转换 94

5.5 实数 96

5.5.1 如何处理实数 97

5.5.2 分数 97

5.5.3 十进制实数 98

5.6 代数 98

5.6.1 多项式运算 98

5.6.2 多项式求根 99

5.7 对数 100

5.8 实数函数库 101

5.9 习题 101

5.9.1 小学生算术(Primary Arithmetic) 101

5.9.2 反转相加(Reverse and Add) 102

5.9.3 考古学家的烦恼(The Archeologist's Dilemma) 103

5.9.4 仅由1组成的数(Ones) 104

5.9.5 乘法游戏(A Multiplication Game) 104

5.9.6 多项式的系数(Polynomial Coefficients) 105

5.9.7 Stern-Brocot代数系统(The Stern-Brocot Number System) 105

5.9.8 两两之和(Pairsumonious Numbers) 106

5.10 提示 107

5.11 注解 108

第6章 组合数学 109

6.1 基本计数技巧 109

6.2 递推关系 110

6.3 二项式系数 111

6.4 其他计数序列 113

6.5 递归与数学归纳法 115

6.6 习题 116

6.6.1 斐波那契计数(How Many Fibs?) 116

6.6.2 土地分割(How Many Pieces of Land?) 116

6.6.3 数数(Counting) 117

6.6.4 括号表达式(Expressions) 118

6.6.5 完全树标号(Complete Tree Labeling) 119

6.6.6 牧师数学家(The Priest Mathematician) 119

6.6.7 自描述序列(Self-describing Sequence) 120

6.6.8 数轴行走(Steps) 121

6.7 提示 122

6.8 注解 122

第7章 数论 123

7.1 素数 123

7.1.1 寻找素数 123

7.1.2 素数的个数 124

7.2 整除性 125

7.2.1 最大公约数 125

7.2.2 最小公倍数 127

7.3 模算术 127

7.4 同余 129

7.4.1 同余运算 129

7.4.2 求解线性同余式 130

7.4.3 不定方程 131

7.5 数论函数库 131

7.6 习题 132

7.6.1 开灯与关灯(Light,More Light) 132

7.6.2 Carmichael数(Carmichael Numbers) 132

7.6.3 欧几里德问题(Euclid Problem) 133

7.6.4 阶乘与整除(Factovisors) 134

7.6.5 四素数之和(Summation of Four Primes) 134

7.6.6 Smith数(Smith Numbers) 135

7.6.7 弹珠(Marbles) 135

7.6.8 重新打包(RePackaging) 136

7.7 提示 137

7.8 注解 137

第8章 回溯法 138

8.1 回溯法 138

8.2 构造所有子集 140

8.3 构造所有排列 141

8.4 程序设计举例:八皇后问题 143

8.5 搜索中的剪枝 144

8.6 习题 147

8.6.1 棋盘上的象(Little Bishops) 147

8.6.2 15数码游戏(15-Puzzle Problem) 148

8.6.3 队伍(Queue) 149

8.6.4 服务站(Servicing Stations) 150

8.6.5 拔河(Tug of War) 150

8.6.6 伊甸园(Garden of Eden) 151

8.6.7 色彩缤纷游戏(Color Hash) 153

8.6.8 拼接正方形(Bigger Square Please...) 154

8.7 提示 156

8.8 注解 156

第9章 图遍历 157

9.1 图的不同属性 157

9.2 图的数据结构 158

9.3 图的遍历:宽度优先 162

9.3.1 宽度优先遍历 162

9.3.2 遍历的应用 163

9.3.3 寻找路径 164

9.4 图的遍历:深度优先 165

9.4.1 寻找环 166

9.4.2 连通分量 167

9.5 拓扑排序 168

9.6 习题 170

9.6.1 双着色(Bicoloring) 170

9.6.2 摆弄轮子(Playing With Wheels) 171

9.6.3 导游(The Tourist Guide) 173

9.6.4 斜线迷宫(Slash Maze) 174

9.6.5 递变阶梯(Edit Step Ladders) 175

9.6.6 立方体之塔(Tower of Cubes) 176

9.6.7 从黄昏到拂晓(From Dusk till Dawn) 177

9.6.8 汉诺塔卷土重来!(Hanoi Tower Troubles Again!) 179

9.7 提示 179

第10章 图算法 181

10.1 图论 181

10.1.1 度的性质 181

10.1.2 连通性 182

10.1.3 图中的回路 182

10.1.4 平面图 183

10.2 最小生成树 183

10.3 最短路 186

10.3.1 Dijkstra算法 186

10.3.2 每对结点之间的最短路 188

10.4 网络流和二分图匹配 191

10.5 习题 195

10.5.1 斑点(Freckles) 195

10.5.2 项链(The Necklace) 195

10.5.3 消防站(Fire Station) 197

10.5.4 铁路(Railroads) 198

10.5.5 战争(War) 199

10.5.6 导游(Tourist Guide) 201

10.5.7 丰盛的晚餐(The Grand Dinner) 202

10.5.8 命题者的难题(The Problem With the Problem Setter) 203

10.6 提示 205

第11章 动态规划 206

11.1 慎用贪心法 206

11.2 编辑距离 207

11.3 重建路径 211

11.4 编辑距离的变种 212

11.5 程序设计举例:电梯优化 214

11.6 习题 218

11.6.1 越大越聪明?(Is Bigger Smarter?) 218

11.6.2 不同的子序列(Distinct Subsequences) 219

11.6.3 重量和力量(Weights and Measures) 219

11.6.4 单向TSP(Unidirectional TSP) 220

11.6.5 切割小木棍(Cutting Sticks) 221

11.6.6 渡船装载(Ferry Loading) 222

11.6.7 筷子(Chopsticks) 223

11.6.8 搬家大冒险:第四部(Adventures in Moving:Part IV) 224

11.7 提示 225

11.8 注解 225

第12章 网格 226

12.1 矩形网格 226

12.1.1 遍历 227

12.1.2 对偶图及其表示 228

12.2 三角形网格和六边形网格 229

12.2.1 三角形网格 229

12.2.2 六边形网格 230

12.3 程序设计举例:西餐碟的重量 232

12.4 给圆打包 234

12.5 经度和纬度 236

12.6 习题 236

12.6.1 棋盘上的蚂蚁(Ant on a Chessboard) 236

12.6.2 独轮车(The Monocycle) 237

12.6.3 六角星(Star) 239

12.6.4 蜜蜂Maja(Bee Maja) 240

12.6.5 抢劫案(Robbery) 241

12.6.6 (2/3/4)-维立方体?((2/3/4)-D Sqr/Rects/Cubes/Boxes?) 242

12.6.7 Dermuba三角(Dermuba Triangle) 243

12.6.8 航线(Airlines) 244

12.7 提示 246

第13章 几何 247

13.1 直线 247

13.2 三角形和三角学 250

13.2.1 直角三角形和勾股定理 251

13.2.2 三角函数 251

13.2.3 解三角形 252

13.3 圆 253

13.4 程序设计举例:超高速飞行 255

13.5 三角函数库 257

13.6 习题 259

13.6.1 狗拿地鼠(Dog and Gopher) 259

13.6.2 绳子王国的危机!(Rope Crisis in Ropeland!) 260

13.6.3 圆桌骑士(The Knights of the Round Table) 260

13.6.4 巧克力片饼干(Chocolate Chip Cookies) 261

13.6.5 生日蛋糕(Birthday Cake) 262

13.6.6 最大/最小的盒子(The Largest/Smallest Box...) 263

13.6.7 要算积分吗?(Is This Integration?) 264

13.6.8 它有多大?(How Big Is It?) 265

13.7 提示 266

第14章 计算几何 277

14.1 线段及其相交 277

14.2 多边形及旋转方向 278

14.3 凸包 270

14.4 三角剖分:算法与相关问题 274

14.4.1 Van Gogh算法 274

14.4.2 面积计算 276

14.4.3 点定位 277

14.5 网格上的算法 278

14.5.1 范围查询 278

14.5.2 网格多边形与Pick定理 279

14.6 几何函数库 280

14.7 习题 280

14.7.1 新生集会(Herding Frosh) 280

14.7.2 最近点对问题(The Closest Pair Problem) 281

14.7.3 电锯惊魂(Chainsaw Massacre) 282

14.7.4 冷热游戏(Hotter Colder) 283

14.7.5 没用的瓷砖打包公司(Useless Tile Packers) 284

14.7.6 雷达追踪(Radar Tracking) 285

14.7.7 岛上的树(Trees on My Island) 286

14.7.8 美味的牛奶(Nice Milk) 287

14.8 提示 288

附录A 290

A.1 ACM国际大学生程序设计竞赛 290

A.1.1 准备 290

A.1.2 战略战术 292

A.2 国际信息学奥林匹克 293

A.2.1 如何参加 293

A.2.2 比赛形式 294

A.2.3 准备 295

A.3 Topcoder.com 295

A.4 念研究生吧! 296

A.5 题目致谢 297

参考文献 300