算法基础——打开程序设计之门

算法基础——打开程序设计之门

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书详细介绍竞赛算法与程序设计,涵盖11章基础到高级知识。

内容简介

本书内容包括国际和国内大学生程序设计竞赛涉及的算法和程序设计知识,本书共有11章,内容包括操作系统与编程环境、C++基础知识、算法入门、图的基本算法、排序算法、基本数据结构、基本算法设计、用于集合操作的数据结构、用于字符串操作的数据结构、动态规划、有关数论的算法、图论高级算法、经典算法问题、搜索。

章节目录

封面

书名页

内容简介

版权页

前言

目录

第1章 高级数据结构

1.1 堆

1.1.1 堆的定义

1.1.2 建堆

1.1.3 堆排序算法

1.2 树状数组

1.2.1 树状数组的定义

1.2.2 树状数组的实现和使用

1.2.3 例题讲解

1.3 左倾堆

1.3.1 左倾堆相关定义和性质

1.3.2 左倾堆的操作

1.3.3 例题讲解

1.4 平衡二叉树

1.4.1 Treap

1.4.2 Splay树

1.4.3 例题讲解

1.5 练习题

第2章 字符串

2.1 Trie树

2.1.1 Trie树的原理

2.1.2 Trie树的实现

2.1.3 例题讲解

2.2 KMP算法

2.2.1 KMP算法的原理

2.2.2 KMP算法的实现

2.2.3 例题讲解

2.3 Aho-Corasick自动机

2.3.1 Aho-Corasick自动机原理

2.3.2 Aho-Corasick自动机算法的实现

2.3.3 例题讲解

2.4 后缀数组

2.4.1 后缀数组基本原理

2.4.2 后缀数组的应用

2.4.3 例题讲解

2.5 练习题

第3章 动态规划进阶算法

3.1 树状DP

3.1.1 树状DP的定义

3.1.2 树状DP解题方法

3.1.3 例题讲解

3.2 状态压缩DP

3.2.1 集合的整数表示

3.2.2 例题讲解

3.3 动态规划的优化方法

3.3.1 单调队列优化的动态规划

3.3.2 例题讲解

3.3.3 斜率优化的动态规划

3.3.4 例题讲解

3.3.5 四边形不等式优化的动态规划

3.3.6 例题讲解

3.4 练习题

第4章 图论高级算法

4.1 最大流

4.1.1 最大流的定义

4.1.2 增广路算法涉及的三个重要概念

4.1.3 Edmonds-Karp算法

4.1.4 Dinic算法

4.1.5 ISAP算法

4.1.6 网络流的建图

4.1.7 例题讲解

4.2 最小费用流

4.2.1 最小费用流算法

4.2.2 例题讲解

4.3 二分图匹配

4.3.1 二分图的定义

4.3.2 二分图的最大匹配

4.3.3 二分图的性质与应用

4.3.4 例题讲解

4.4 练习题

第5章 经典算法问题

5.1 多项式与快速傅里叶变换

5.1.1 多项式

5.1.2 多项式的表示与多项式乘法

5.1.3 DFT和FFT的实现

5.1.4 例题讲解

5.2 NP完全性

5.2.1 NP问题简介

5.2.2 哈密顿回路

5.2.3 例题讲解

5.3 对偶图问题

5.3.1 基本概念

5.3.2 平面图转化为对偶图

5.3.3 对偶图的应用

5.4 RMQ问题

5.4.1 RMQ问题的简单求解方法

5.4.2 ST(Sparse Table)算法

5.4.3 例题讲解

5.5 LCA问题

5.5.1 LCA问题的简单求解方法

5.5.2 基于倍增的双亲存储法

5.5.3 高效的LCA算法

5.5.4 例题讲解

5.6 练习题

第6章 组合数学

6.1 排列组合

6.1.1 基本计数原则

6.1.2 排列

6.1.3 组合

6.1.4 例题讲解

6.2 母函数

6.2.1 母函数基础

6.2.2 母函数的两类具体应用

6.2.3 例题讲解

6.3 整数划分

6.3.1 从动态规划到母函数

6.3.2 例题讲解

6.4 Stirling数和Catalan数

6.4.1 第一类Stirling数

6.4.2 第二类Stirling数

6.4.3 Catalan数

6.4.4 例题讲解

6.5 容斥原理与反演

6.5.1 容斥原理

6.5.2 反演理论

6.5.3 Mobius反演

6.5.4 例题讲解

6.6 群论与Polya定理

6.6.1 群的基本性质

6.6.2 置换群

6.6.3 Burnside定理及Polya定理

6.6.4 例题讲解

6.7 练习题

第7章 计算几何

7.1 多边形上的数据结构表示

7.1.1 点

7.1.2 线段

7.1.3 多边形类

7.1.4 例题讲解

7.2 多边形相交问题

7.2.1 线段相交

7.2.2 多边形相交问题的讨论

7.2.3 例题讲解

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.6 圆

7.6.1 圆与线段的交

7.6.2 圆与多边形的交的面积

7.6.3 圆与圆的交的面积

7.6.4 圆与圆的并的面积

7.7 练习题

第8章 组合游戏论

8.1 组合游戏论中的游戏

8.1.1 组合游戏论的定义

8.1.2 博弈树模型

8.1.3 巴什博弈

8.1.4 威佐夫博弈

8.1.5 例题讲解

8.2 NIM游戏和SG函数

8.2.1 NIM游戏的定义

8.2.2 NIM游戏中的性质

8.2.3 Sprague-Grundy函数的价值

8.2.4 SG函数的应用

8.2.5 例题讲解

8.3 NIM游戏的变形

8.3.1 ANTI-NIM问题

8.3.2 Staircase NIM

8.3.3 例题讲解

8.4 练习题

参考文献

封底

算法基础——打开程序设计之门是2019年由电子工业出版社出版,作者 刘胜蓝。

得书感谢您对《算法基础——打开程序设计之门》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
C++程序设计基础教程 电子书
《C++程序设计基础教程》利用通俗易懂的语言以及大量浅显易懂的典型实例,循序渐进地介绍C++程序设计的基础知识与编程方法,将C++程序设计的难点、要点分层次、分阶段地逐步展示出来,十分易学易懂。全书共分10章,包括:C++简介、C++编程基础、函数及变量的作用域、数组、结构体和简单链表、面向对象的程序设计、继承与多态性、友元函数与运算符重载、模板和异常处理、输入/输出流。
C#程序设计基础与实践 电子书
本书以C#语言为载体,系统地讲解了算法的概念、程序设计的基本思想,以及常用的程序设计方法。本书的主要内容包括:程序设计基础知识与C#程序设计的一般方法;算法的概念及应用;数据类型的概念及C#中的常用数据类型;类和对象的概念及应用;用户界面设计的一般方法和技能;I/O流与数据文件的概念及应用。
深度学习高手笔记·卷1:基础算法 电子书
本书从算法理论、算法源码、实验结果等方面对深度学习算法进行分析和介绍。
Java程序设计基础教程(慕课版) 电子书
本书通过大量案例详细讲解了Java程序设计的基础知识,共12章,内容包括:Java基础知识,基本类型及运算符,控制执行流程,字符串,面向对象,集合和数组,文件及流,日期和时间,反射、异常及枚举,并发编程,网络编程及综合实训——简易网上自助银行系统。本书运用图、文、视频配合讲解,浅显易懂,代码注释详细,配全套慕课视频,资源丰富,贴近行业应用。本书适合作为本科、高职高专、培训班Java基础课程的教材,
JavaScript程序设计基础教程(慕课版) 电子书
JavaScript是目前非常流行的网页前端开发技术之一。本书利用大量案例深入浅出地介绍了JavaScript程序设计的基础知识。本书分为三篇,第一篇为初识JavaScript,包括JavaScript简介;第二篇为JavaScript必备基础知识,包括JavaScript基本语法、JavaScript程序构成、JavaScript对象和JavaScript数组;第三篇为JavaScript技能提