Dotcpp  >  编程教程  >  算法竞赛教程

算法竞赛教程

点击打开在线编译器,边学边练

算法竞赛本教程为面向有一定编程基础(即熟练至少一门编程语言如C/C++、java、Python),有志参加如ACM、蓝桥杯、OI类程序设计类比赛的同学准备的算法为主的竞赛教程。

如果编程语言还不熟练,建议先学习和巩固编程语法,相应教程见:C语言教程C++教程Java教程Python教程


本套教程主要参考OIwiki和网络,并做了相应的修改和调整,及增加了匹配的习题,对照OJ中题库,可以及时的匹配训练,趁热打铁,让当时的理解马上得到锻炼。


同时,在学习过程中,大家可以点击右侧弹出编译器,在线运行代码,实时测试代码运行,学练同步。

第一章 算法基础

1.算法是什么?

2.深入分析算法的复杂度

3.枚举算法的思想与实例讲解

4.模拟算法实例讲解

5.贪心算法的基本思想与实例讲解

6.递归算法概念与实例讲解

7.分治算法概念与实例讲解

8.前缀和理解与应用

9.差分的理解与应用

10.二分查找(折半查找)实例讲解

11.二分答案算法实例讲解

12.倍增算法实例讲解

13.结合实例浅析构造题型

14.用C语言解答汉诺塔问题

第二章 搜索算法

1.搜索算法简介

2.结合实例解析深度优先搜索(DFS)搜索

3.结合实例解析宽度优先搜索(BFS)搜索

4.结合实例解析双向搜索

5.什么是启发式搜索?

6.图文解析A*搜索算法

7.C++代码浅谈迭代加深搜索

8.C++代码浅谈IDA*算法

9.回溯法入门级讲解

10.回溯法经典例题分析

11.最优化算法实例讲解

12.Alpha-Beta剪枝搜索图文讲解

13.Minimax算法(极小化极大算法)及实例讲解

14.舞蹈链算法(Dancing Links)运用及执行过程

15.舞蹈链算法(Dancing links)实例讲解

第三章 排序算法

1.排序算法简介

2.冒泡排序算法C/C++代码图文讲解

3.插入排序算法C/C++代码图文讲解

4.归并排序算法C/C++代码图文讲解

5.快速排序算法C/C++代码图文讲解

6.计数排序算法C/C++代码图文讲解

7.桶排序算法C/C++代码图文讲解

8.希尔排序算法C/C++代码图文讲解

9.选择排序算法C/C++代码图文讲解

10.树形选择排序(锦标赛排序)C/C++代码图文讲解

11.堆排序算法C/C++代码图文讲解

12.直接选择排序C/C++代码图文讲解

13.基数排序算法C/C++代码图文讲解

14.快速排序算法C/C++代码图文讲解

15.排序算法在日常的应用

第四章 字符串相关

1.什么是字符串(str)?

2.字符串基础知识

3.C语言标准库中的字符串

4.C++标准库中的字符串

5.字符串匹配实例讲解

6.解析字符串哈希(Hash)

7.字典树(trie)/前缀树(Prefix Tree)实例讲解

8.KMP算法与前缀函数实例讲解

9.Boyer-Moore算法图文讲解

10.KMP和Z函数

11.自动机(确定有限状态自动机)

12.什么是AC自动机?

13.什么是后缀树?

14.后缀平衡树简介

15.后缀自动机(单词的有向无环图)简介

16.广义后缀自动机概述

17.序列自动机概述

18.什么是Manacher算法?

19.最小表示法算法解析

20.什么是Lyndon分解?

21.什么是后缀数组?

22.回文树/回文自动机 (PAM) 实现及模板

第五章 数学相关

1.什么是数学?

2.常用的数学运算符号及含义

3.什么是进位制?

4.位运算的应用

5.高精度计算的应用

6.复数的概念和运算

7.牛顿迭代法原理及其应用

8.什么是数值积分?

9.傅里叶-莫茨金消元法的应用

10.置换和排列的区别?

11.如何证明升幂定理?

第六章 动态规划

1.什么是动态规划?

2.动态规划概念和实例讲解

3.什么是记忆化搜索?

4.记忆化搜索实例讲解

5.超详细背包DP九讲(算法分析+问题分析+代码分析)

6.区间DP实例讲解

7.DAG上的DP实例讲解

8.树形DP概念和实例讲解

9.数位DP概念和实例讲解

10.什么是状态压缩DP?

11.状态压缩DP图文实例讲解(一)

12.状态压缩DP图文实例讲解(二)

13.什么是哈希?

14.插头DP图文实例讲解

15.计数DP实例讲解

16.什么是概率DP?

17.概率DP实例讲解

18.什么是线性DP?

19.线性DP图文实例讲解

20.动态DP实例讲解

21.DP优化(一)单调队列/单调栈优化实例讲解

22.DP优化(二)斜率优化实例讲解

23.DP优化(三)四边形不等式优化实例讲解

第七章 数据结构

1.什么是数据结构?

2.解析数据结构:八大数据结构分类

3.数据结构的特点

4.栈的定义和特点

5.什么是队列?队列的应用

6.什么是链表?

7.什么是哈希表?

8.什么是“并查集” ?

9.什么是单调栈?

10.什么是跳表?

11.简述霍夫曼树

12.手指树的基本结构

第八章 图论

1.图论部分简介

2.图的基础概念

3.图的储存方式

4.图文解析图论DFS(深度优先搜索)

5.图文解析图论BFS(广度优先搜索)

6.图论矩阵树定理实例讲解

7.有向无环图图文讲解

8.什么是拓扑排序?

9.最小生成树图文讲解

10.斯坦纳树Steiner Tree实例讲解

11.DFS求有向图(无向图)两点间路径

12.树的基础知识

13.树的直径实例讲解

14.什么是树的重心?

15.树链剖分解决什么问题?

16.树上启发式合并

17.什么是虚树?

18.树哈希常用的方式

19.什么是树上随机游走?

20.简述矩阵树定理

21.图论中的有向无环图

22.什么是拓扑排序?

23.最小生成树图文解析

24.斯坦纳树的应用

25.简述最小树形图

26.网络流常用小技巧拆点

27.什么是差分约束系统?

28.欧拉图的判定

29.哈密顿图的应用

30.二分图的定义和判定

31.二分图的最大匹配、完美匹配和匈牙利算法

32.网络流的基本概念

33.最大流是什么?

34.上下界网络流总结

35.简述最大团搜索算法

36.什么是弦图?

37.简述LGV引理

38.什么是Prufer序列?

39.平面图的基本概念及性质

第九章 计算几何

1.什么是计算几何?

2.二维计算几何基础

3.三维计算几何基础

4.简述Pick定理

5.三角剖分的定义和应用

6.什么是凸包?

7.简述旋转卡壳

8.半平面交的定义和解法

9.简述随机增量法

10.反演变换的性质

第十章 其他算法

1.离散化算法实例讲解

2.常用的双指针技巧

3.在线算法和离线算法的区别

4.浅谈分数规划

5.简述随机化算法

6.悬线法实例讲解

7.什么是字节顺序?

8.浅谈约瑟夫问题

9.什么是格雷码?

10.浅谈表达式求值

11.浅析Garsia-Wachs算法


本文固定URL:https://www.dotcpp.com/course/algorithm/

算法竞赛教程
第一章 算法基础
第二章 搜索算法
第三章 排序算法
第四章 字符串相关
第五章 数学相关
第六章 动态规划
第七章 数据结构
第八章 图论
第九章 计算几何
第十章 其他算法
Dotcpp在线编译      (登录可减少运行等待时间)