知识点
 基础算法 —— 代码模板链接 常用代码模板1——基础算法
排序
 二分
 高精度
 前缀和与差分
 双指针算法
 位运算
 离散化
 区间合并
 数据结构 —— 代码模板链接 常用代码模板2——数据结构
链表与邻接表:树与图的存储
 栈与队列:单调队列、单调栈
 kmp
 Trie
 并查集
 堆
 Hash表
 搜索与图论 —— 代码模板链接 常用代码模板3——搜索与图论
DFS与BFS
 树与图的遍历:拓扑排序
 最短路
 最小生成树
 二分图:染色法、匈牙利算法
 数学知识 —— 代码模板链接 常用代码模板4——数学知识
质数
 约数
 欧拉函数
 快速幂
 扩展欧几里得算法
 中国剩余定理
 高斯消元
 组合计数
 容斥原理
 简单博弈论
 动态规划
背包问题
 线性DP
 区间DP
 计数类DP
 数位统计DP
 状态压缩DP
 树形DP
 记忆化搜索
 贪心
时空复杂度分析
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特·哥德尔、Jacques Herbrand和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐·邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾伦·图灵1937年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。










