算法竞赛入门经典+算法设计编程实验(京东套装共2册)
《大学程序设计课程与竞赛训练教材:算法设计编程实验》
前言
第1章 求解Ad Hoc类问题的编程实验
1.1 机理分析法的实验范例
1.2 统计分析法的实验范例
1.3 相关题库
第2章 模拟法的编程实验
2.1 直叙式模拟的实验范例
2.2 筛选法模拟的实验范例
2.3 构造法模拟的实验范例
2.4 相关题库
第3章 数论的编程实验
3.1 素数运算的实验范例
3.1.1 使用筛法生成素数的实验范例
3.1.2 测试大素数的实验范例
3.2 求解不定方程和同余方程的实验范例
3.2.1 计算最大公约数和不定方程
3.2.2 计算同余方程和同余方程组
3.3 积性函数的实验范例
3.3.1 使用欧拉函数φ(n)计算与n互质的正整数个数
3.3.2 使用莫比乌斯函数μ(n)计算非平方数n的质因子个数
3.4 相关题库
第4章 组合分析的编程实验
4.1 生成排列组合的实验范例
4.1.1 按字典序思想生成下一排列组合
4.1.2 按字典序思想生成所有的排列组合
4.2 排列组合计数的实验范例
4.2.1 一般的排列组合计数公式
4.2.2 两种特殊的排列组合计数公式
4.3 容斥原理与抽屉原理的实验范例
4.3.1 利用抽屉原理求解存在性问题
4.3.2 利用容斥原理对并集计数
4.4 波利亚定理的实验范例
4.4.1 波利亚定理的概念基础
4.4.2 利用波利亚定理计算集合在置换群作用下产生的等价类个数
4.5 相关题库
第5章 贪心法的编程实验
5.1 体验贪心法内涵的实验范例
5.2 利用数据有序化进行贪心选择的实验范例
5.3 在综合性的P类问题中使用贪心法的实验范例
5.4 相关题库
第6章 动态规划(DP)方法的编程实验
6.1 线性DP的实验范例
6.1.1 初步体验线性DP问题
6.1.2 子集和问题
6.1.3 最长公共子序列问题
6.1.4 最长递增子序列问题
6.2 树形DP的实验范例
6.3 状态压缩DP的实验范例
6.4 单调优化1D/1D DP的实验范例
6.4.1 经典模型1:利用决策代价函数w的单调性优化
6.4.2 经典模型2:利用决策区间下界的单调性优化
6.4.3 经典模型3:利用最优决策点的凸性优化
6.5 相关题库
第7章 高级数据结构的编程实验
7.1 后缀数组的实验范例
7.1.1 使用倍增算法计算名次数组和后缀数组
7.1.2 计算最长公共前缀
7.1.3 后缀数组的应用
7.2 线段树的实验范例
7.2.1 线段树的基本概念和基本操作
7.2.2 线段树单点更新的维护
7.2.3 线段树子区间更新的维护
7.3 处理特殊图的实验范例
7.3.1 计算欧拉图
7.3.2 计算哈密尔顿图
7.3.3 计算最大独立集
7.3.4 计算割点、桥和双连通分支
7.4 相关题库
第8章 计算几何的编程实验
8.1 点线面运算的实验范例
8.1.1 计算点积和叉积
8.1.2 计算线段交
8.1.3 利用欧拉公式计算多面体
8.2 利用扫描线算法计算矩形的面积并
8.2.1 沿垂直方向计算矩形的面积并
8.2.2 沿水平方向计算矩形的面积并
8.3 计算半平面交的实验范例
8.3.1 计算半平面交的联机算法
8.3.2 利用极角计算半平面交的算法
8.4 计算凸包和旋转卡壳的实验范例
8.4.1 计算凸包
8.4.2 旋转卡壳实验
8.5 相关题库
……
《算法艺术与信息学竞赛:算法竞赛入门经典》
第1部分 语言篇
第1章 程序设计入门
1.1 算术表达式
1.2 变量及其输入
1.3 顺序结构程序设计
1.4 分支结构程序设计
1.5 小结与习题
1.5.1 数据类型实验
1.5.2 scanf输入格式实验
1.5.3 printf语句输出实验
1.5.4 测测你的实践能力
1.5.5 小结
1.5.6 上机练习
第2章 循环结构程序设计
2.1 for循环
2.2 循环结构程序设计
2.3 文件操作
2.4 小结与习题
2.4.1 输出技巧
2.4.2 浮点数陷阱
2.4.3 64位整数
2.4.4 C++中的输入输出
2.4.5 小结
2.4.6 上机练习
第3章 数组和字符串
3.1 数组
3.2 字符数组
3.3 最长回文子串
3.4 小结与习题
3.4.1 必要的存储量
3.4.2 用ASCII编码表示字符
3.4.3 补码表示法
3.4.4 重新实现库函数
3.4.5 字符串处理的常见问题
3.4.6 关于输入输出
3.4.7 I/O的效率
3.4.8 小结
3.4.9 上机练习
第4章 函数和递归
4.1 数学函数
4.1.1 简单函数的编写
4.1.2 使用结构体的函数
4.1.3 应用举例
4.2 地址和指针
4.2.1 变量交换
4.2.2 调用栈
4.2.3 用指针实现变量交换
4.2.4 初学者易犯的错误
4.3 递归
4.3.1 递归定义
4.3.2 递归函数
4.3.3 C语言对递归的支持
4.3.4 段错误与栈溢出
4.4 本章小结
4.4.1 小问题集锦
4.4.2 小结
第2部分 算法篇
第5章 基础题目选解
5.1 字符串
5.1.1 WERTYU
5.1.2 TeX括号
5.1.3 周期串
5.2 高精度运算
5.2.1 小学生算术
5.2.2 阶乘的精确值
5.2.3 高精度运算类bign
5.2.4 重载bign的常用运算符
5.3 排序与检索
5.3.1 6174问题
5.3.2 字母重排
5.4 数学基础
5.4.1 Cantor的数表
5.4.2 因子和阶乘
5.4.3 果园里的树
5.4.4 多少块土地
5.5 训练参考
5.5.1 黑盒测试
5.5.2 在线评测系统
5.5.3 推荐题目
第6章 数据结构基础
6.1 栈和队列
6.1.1 卡片游戏
6.1.2 铁轨
6.2 链表
6.2.1 初步分析
6.2.2 链式结构
6.2.3 对比测试
6.2.4 随机数发生器
6.3 二叉树
6.3.1 小球下落
6.3.2 层次遍历
6.3.3 二叉树重建
6.4 图
6.4.1 黑白图像
6.4.2 走迷宫
6.4.3 拓扑排序
6.4.4 欧拉回路
6.5 训练参考
第7章 暴力求解法
7.1 简单枚举
7.1.1 除法
7.1.2 最大乘积
7.1.3 分数拆分
7.1.4 双基回文数
7.2 枚举排列
7.2.1 生成1~n的排列
7.2.2 生成可重集的排列
7.2.3 解答树
7.2.4 下一个排列
7.3 子集生成
7.3.1 增量构造法
7.3.2 位向量法
7.3.3 二进制法
7.4 回溯法
7.4.1 八皇后问题
7.4.2 素数环
7.4.3 困难的串
7.4.4 带宽
7.5 隐式图搜索
7.5.1 隐式树的遍历
7.5.2 一般隐式图的遍历
7.5.3 八数码问题
7.5.4 结点查找表
7.6 训练参考
第8章 高效算法设计
8.1 算法分析初步
8.1.1 渐进时间复杂度
8.1.2 上界分析
8.1.3 分治法
8.1.4 正确对待算法分析结果
8.2 再谈排序与检索
8.2.1 归并排序
8.2.2 快速排序
8.2.3 二分查找
8.3 递归与分治
8.3.1 棋盘覆盖问题
8.3.2 循环日程表问题
8.3.3 巨人与鬼
8.3.4 非线性方程求根
8.3.5 最大值最小化
8.4 贪心法
8.4.1 最优装载问题
8.4.2 部分背包问题
8.4.3 乘船问题
8.4.4 选择不相交区间
8.4.5 区间选点问题
8.4.6 区间覆盖问题
8.4.7 Huffman编码
8.5 训练参考
第3部分 竞赛篇
第9章 动态规划初步
9.1 数字三角形
9.1.1 问题描述与状态定义
9.1.2 记忆化搜索与递推
9.2 DAG上的动态规划
9.2.1 DAG模型
9.2.2 最长路及其字典序
9.2.3 固定终点的最长路和最短路
9.3 0-1背包问题
9.3.1 多阶段决策问题
9.3.2 规划方向
9.3.3 滚动数组
9.4 递归结构中的动态规划
9.4.1 表达式上的动态规划
9.4.2 凸多边形上的动态规划
9.4.3 树上的动态规划
9.5 集合上的动态规划
9.5.1 状态及其转移
9.5.2 隐含的阶段
9.6 训练参考
第10章 数学概念与方法
10.1 数论初步
10.1.1 除法表达式
10.1.2 无平方因子的数
10.1.3 直线上的点
10.1.4 同余与模算术
10.2 排列与组合
10.2.1 杨辉三角与二项式定理
10.2.2 数论中的计数问题
10.2.3 编码与解码
10.2.4 离散概率初步
10.3 递推关系
10.3.1 汉诺塔
10.3.2 Fibonacci数列
10.3.3 Catalan数
10.3.4 危险的组合
10.3.5 统计n-k特殊集的数目
10.4 训练参考
第11章 图论模型与算法
11.1 再谈树
11.1.1 无根树转有根树
11.1.2 表达式树
11.1.3 最小生成树
11.1.4 并查集
11.2 最短路问题
11.2.1 Dijkstra算法
11.2.2 稀疏图的邻接表
11.2.3 使用优先队列的Dijkstra算法
11.2.4 Bellman-Ford算法
11.2.5 Floyd算法
11.3 网络流初步
11.3.1 最大流问题
11.3.2 增广路算法
11.3.3 最小割最大流定理
11.3.4 最小费用最大流问题
11.4 进一步学习的参考
11.4.1 编程语言
11.4.2 数据结构
11.4.3 算法设计
11.4.4 数学
11.4.5 参赛指南
11.5 训练参考
附录A 开发环境与方法
A.1 命令行
A.1.1 文件系统
A.1.2 进程
A.1.3 程序的执行
A.1.4 重定向和管道
A.1.5 常见命令
A.2 操作系统脚本编程入门
A.2.1 Windows下的批处理
A.2.2 Linux下的Bash脚本
A.2.3 再谈随机数
A.3 编译器和调试器
A.3.1 gcc的安装和测试
A.3.2 常见编译选项
A.3.3 gdb简介
A.3.4 gdb的高级功能
A.4 浅谈IDE
刘汝佳,1982年12月生,高中毕业于重庆市外国语学校。
2000年3月获得NO12000全国青少年信息学奥林匹克竞赛一等奖第四名,进入国家集训队,并因此保送到清华大学计算机科学与技术系。大一时获2001年ACM/ICPC国际大学生程序设计竞赛亚洲一上海赛区冠军和2002年世界总决赛银牌(世界第四),2005年获学士学位,2008年获硕士学位。
学生时代曾为中国计算机学会NOI科学委员会学生委员,担任J012002-2008中国国家队教练,并为NOI系列比赛命题十余道。现为NOI竞赛委员会委员,并在NOI 25周年时获得中国计算机学会颁发的“特别贡献奖”。
2004年至今共为ACM/ICPC亚洲赛区命题二十余道,担任6次裁判和2次命题总监,并应邀参加IOI和ACM/lCPC相关国际研讨会,发表论文两篇。
2004年初作为第一作者出版专著《算法艺术与信息学竞赛》,2009年出版译著《编程挑战》。
多年来在全国二十余个城市进行中学生竞赛培训工作,为北京、上海、吉隆坡等地的著名高校授课与宣讲,并多次与TopCodet、百度和网易有道等知名企业合作举办比赛,让更多的IT人才获得展示自我的平台。
《大学程序设计课程与竞赛训练教材:算法设计编程实验》
以知识体系结构、思维方式与解题策略为主线,分8章分别介绍AdHoc、模拟法、数论、组合分析、贪心法、动态规划方法、高级数据结构、计算几何的编程实验。每个章节由实验范例和题库两个部分组成,试题全部选自ACM国际大学生程序设计竞赛以及其他各类程序设计竞赛,共234题(3题为一题多解),并给出了试题来源和在线测试地址。每个实验范例都有详尽的试题解析和标有注释的参考程序,而题库中的所有试题无论难易,都有清晰的提示。另外,华章网站中还给出了《大学程序设计课程与竞赛训练教材:算法设计编程实验》所有试题的英文原版描述和大部分试题的测试数据。
《大学程序设计课程与竞赛训练教材:算法设计编程实验》既可以作为大专院校计算机专业算法课程的教材,也可以作为计算机专业学生的研修资料和程序设计竞赛的培训教材。
《算法艺术与信息学竞赛:算法竞赛入门经典》
《算法艺术与信息学竞赛:算法竞赛入门经典》是一本算法竞赛的入门教材,把C/C++语言、算法和解题有机地结合在了一起,淡化理论,注重学习方法和实践技巧。《算法艺术与信息学竞赛:算法竞赛入门经典》内容分为11章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、基础题目选解、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法,覆盖了算法竞赛入门所需的主要知识点,并附有大量习题。书中的代码规范、简洁、易懂,不仅能帮助读者理解算法原理,还能教会读者很多实用的编程技巧。另外,书中包含的各种开发、测试和调试技巧也是在传统的语言、算法类书籍中难以见到的。
《算法艺术与信息学竞赛:算法竞赛入门经典》可作为全国青少年信息学奥林匹克联赛(NOIP)的复赛教材及ACM国际大学。
比价列表