计算机
类型
可以朗读
语音朗读
593千字
字数
2021-12-01
发行日期
展开全部
主编推荐语
程序设计竞赛训练指南,涵盖基础知识、数学概念,适合参赛学生阅读。
内容简介
本书是针对大学生程序设计竞赛的训练指南,主要介绍程序设计和针对竞赛训练所需的基础知识和基本数学概念,包括UVa OJ平台的使用方法、C++的输入输出处理、C++库实现所包含的数据结构、高级数据结构、字符串的处理和相关算法、排序与查找算法、代数、组合数学、数论、几何等内容。本书在介绍基础概念的基础上,引入了众多题目,以C++解题,针对部分题目给出参考代码,方便参考和练习。 本书适合有意参加程序设计竞赛的本科生、研究生阅读,对有意参加信息学奥林匹克竞赛的中学生具有参考价值。
目录
- 版权信息
- 版 权
- 内容提要
- 序
- 前言
- 资源与支持
- 第1章 准备
- 1.1 什么是程序设计竞赛
- 1.1.1 ACM-ICPC
- 1.1.2 Google Code Jam(GCJ)
- 1.1.3 TopCoder
- 1.1.4 CodeForces
- 1.1.5 IOI
- 1.2 如何使用UVa OJ
- 1.2.1 注册
- 1.2.2 提交
- 1.3 如何选择编程语言
- 1.4 辅助工具
- 第2章 入门
- 2.1 基本数据类型
- 2.1.1 整数的表示
- 2.1.2 浮点数的表示及精度
- 2.1.3 数据类型的取值范围
- 2.2 格式化输入
- 2.2.1 概述
- 2.2.2 标准输入
- 2.2.3 字符串输入
- 2.3 格式化输出
- 2.3.1 概述
- 2.3.2 输出对齐
- 2.3.3 整数输出
- 2.3.4 实数输出
- 2.3.5 缓冲区与输入输出同步
- 2.4 小结
- 第3章 数据结构
- 3.1 内置数组
- 3.1.1 顺序记录
- 3.1.2 游戏模拟
- 3.1.3 矩阵变换
- 3.1.4 约瑟夫问题
- 3.2 向量
- 3.3 栈
- 3.4 队列及优先队列
- 3.4.1 队列
- 3.4.2 优先队列
- 3.5 双端队列
- 3.6 映射
- 3.7 集合
- 3.8 位集
- 3.9 链表
- 3.10 二叉树
- 3.11 范围查询
- 3.11.1 线段树
- 3.11.2 二维线段树
- 3.11.3 区间树
- 3.11.4 树状数组
- 3.11.5 稀疏表
- 3.11.6 根号分块
- 3.12 并查集
- 3.13 算法库函数
- 3.13.1 accumulate、count和count_if函数
- 3.13.2 copy和reverse_copy函数
- 3.13.3 fill函数
- 3.13.4 iotaC++11函数
- 3.13.5 max和min函数
- 3.13.6 max_element和min_element函数
- 3.13.7 memcpy和memset函数
- 3.14 小结
- 第4章 字符串
- 4.1 编码
- 4.2 字符串类
- 4.2.1 声明
- 4.2.2 赋值
- 4.2.3 遍历
- 4.2.4 连接与删除
- 4.2.5 查找与替换
- 4.2.6 其他操作
- 4.3 字符串库函数
- 4.4 字符串类应用
- 4.4.1 文本解析
- 4.4.2 语法分析
- 4.4.3 KMP匹配算法
- 4.4.4 扩展KMP匹配算法
- 4.4.5 Z算法
- 4.4.6 字符串的最小表示
- 4.5 字符串数据结构及应用
- 4.5.1 Trie
- 4.5.2 Aho-Corasick算法
- 4.5.3 后缀数组
- 4.5.4 最长公共子串
- 4.5.5 最长重复子串
- 4.5.6 Burrows-Wheeler变换
- 4.6 正则表达式
- 4.6.1 元字符
- 4.6.2 转义字符
- 4.6.3 数量匹配符和分组
- 4.6.4 字符类和可选模式
- 4.6.5 断言
- 4.6.6 正则表达式类
- 4.7 算法库函数
- 4.7.1 lexicographical_compare函数
- 4.7.2 next_permutation和prev_permutation函数
- 4.7.3 replace函数
- 4.7.4 reverse函数
- 4.7.5 transform函数
- 4.8 小结
- 第5章 排序与查找
- 5.1 交换排序
- 5.1.1 冒泡排序
- 5.1.2 快速排序
- 5.1.3 中位数
- 5.2 插入排序
- 5.2.1 直接插入排序
- 5.2.2 希尔排序
- 5.3 选择排序
- 5.3.1 直接选择排序
- 5.3.2 堆排序
- 5.4 归并排序
- 逆序对数
- 5.5 计数排序
- 5.6 基数排序
- 5.7 桶排序
- 5.8 查找
- 5.8.1 顺序查找
- 5.8.2 二分查找
- 5.8.3 方程求近似解
- 5.8.4 最大值最小化问题
- 5.8.5 三分搜索
- 5.9 算法库函数
- 5.9.1 binary_search函数
- 5.9.2 find函数
- 5.9.3 lower_bound和upper_bound函数
- 5.9.4 nth_element函数
- 5.9.5 partial_sort函数
- 5.9.6 sort函数
- 5.9.7 stable_sort函数
- 5.9.8 unique函数
- 5.10 小结
- 第6章 算术与代数
- 6.1 割鸡焉用牛刀乎
- 6.2 他山之石,可以攻玉
- 6.3 高精度整数类的实现
- 6.4 进制及其转换
- 6.4.1 进制数转换为十进制数
- 6.4.2 十进制数转换为进制数
- 6.4.3 任意进制数之间的相互转换
- 6.4.4 罗马计数法
- 6.5 实数
- 6.5.1 分数
- 6.5.2 连续分数
- 6.5.3 分数转换为小数
- 6.5.4 小数转换为分数
- 6.5.5 实数大小的比较
- 6.6 代数
- 6.6.1 多项式运算
- 6.6.2 高斯消元法
- 6.7 幂与对数
- 6.8 实数函数库
- 6.9 小结
- 第7章 组合数学
- 7.1 计数原理
- 7.1.1 加法原理
- 7.1.2 乘法原理
- 7.2 排列与组合
- 7.2.1 康托展开和康托逆展开
- 7.2.2 方程的整数解数量
- 7.3 Pólya计数定理
- 7.3.1 基本概念
- 7.3.2 Burnside引理
- 7.3.3 Pólya计数定理
- 7.4 鸽笼原理
- 拉姆齐理论
- 7.5 容斥原理
- 错排问题
- 7.6 初等数列
- 7.6.1 等差数列
- 7.6.2 等比数列
- 7.6.3 其他数列
- 7.7 计数序列
- 7.7.1 斐波那契数
- 7.7.2 卡特兰数
- 7.7.3 欧拉数
- 7.7.4 斯特林数
- 7.7.5 调和级数
- 7.7.6 其他序列
- 7.8 概率论
- 7.8.1 基本概念
- 7.8.2 条件概率和独立事件
- 7.8.3 全概率公式与贝叶斯公式
- 7.8.4 随机变量
- 7.8.5 期望
- 7.9 博弈论
- 7.9.1 Nim游戏
- 7.9.2 Sprague-Grundy定理
- 7.9.3 Nim游戏和Sprague-Grundy定理扩展
- 7.9.4 PN态分析
- 7.10 小结
- 第8章 数论
- 8.1 素数
- 8.1.1 素数判定
- 8.1.2 米勒-拉宾素性测试
- 8.1.3 高斯素数
- 8.1.4 生成素数序列
- 8.1.5 素因子分解
- 8.2 整除性
- 8.2.1 最大公约数
- 8.2.2 扩展欧几里得算法
- 8.2.3 线性同余方程
- 8.2.4 最小公倍数
- 8.2.5 欧拉函数
- 8.2.6 莫比乌斯函数
- 8.3 模算术
- 8.3.1 整数拆分
- 8.3.2 可乐兑换
- 8.3.3 模运算规则
- 8.3.4 模的逆元
- 8.3.5 离散对数
- 8.3.6 中国剩余定理
- 8.3.7 波拉德启发式因子分解算法
- 8.4 日期和时间转换
- 8.4.1 日期转换
- 8.4.2 时间转换
- 8.5 小结
- 第9章 几何
- 9.1 点
- 9.2 直线
- 9.2.1 直线的表示
- 9.2.2 直线间关系
- 9.2.3 相互垂直的两条直线交点
- 9.3 坐标和坐标系变换
- 9.3.1 平移
- 9.3.2 旋转
- 9.3.3 缩放
- 9.4 三角形
- 9.4.1 勾股定理
- 9.4.2 三角函数
- 9.4.3 正弦定理
- 9.4.4 余弦定理
- 9.4.5 三角形面积
- 9.4.6 三角函数库
- 9.4.7 桌球碰撞问题
- 9.5 多边形
- 9.5.1 矩形
- 9.5.2 四边形和正多边形
- 9.6 圆
- 9.6.1 圆的周长和面积
- 9.6.2 圆的切线
- 9.6.3 三角形的内切圆与外接圆
- 9.6.4 圆与圆的位置关系
- 9.6.5 最小圆覆盖
- 9.7 小结
- 第10章 计算几何
- 10.1 基本概念
- 10.1.1 线段
- 10.1.2 多边形
- 10.2 几何对象间的关系
- 10.2.1 向量、内积和外积
- 10.2.2 点和直线的关系
- 10.2.3 确定线段转动方向
- 10.2.4 确定线段是否相交
- 10.2.5 点的投影
- 10.2.6 点的映像
- 10.2.7 点和直线间距离
- 10.2.8 点和线段间距离
- 10.2.9 线段和线段间距离
- 10.2.10 点和多边形的关系
- 10.2.11 直线和圆的交点
- 10.2.12 圆和圆的交点
- 10.2.13 圆的切点
- 10.3 扫描线算法
- 10.4 坐标离散化
- 10.4.1 最大化矩形问题
- 10.4.2 矩形并的面积
- 10.4.3 矩形并的周长
- 10.5 凸包
- 10.5.1 Graham扫描法
- 10.5.2 Jarvis步进法
- 10.5.3 Andrew合并法
- 10.5.4 Melkman算法
- 10.6 公式及定理应用
- 10.6.1 Pick定理
- 10.6.2 多边形面积
- 10.6.3 多边形重心
- 10.6.4 三维几何体的表面积和体积
- 10.7 半平面交问题
- 10.7.1 凸多边形切分
- 10.7.2 多边形内核
- 10.8 最近点对问题
- 10.9 最远点对问题
- 10.10 三维空间计算几何
- 10.10.1 点
- 10.10.2 直线
- 10.10.3 平面
- 10.10.4 三维凸包
- 10.11 小结
- 附录A ASCII表
- 附录B C++运算符优先级
- 参考资料
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。
