虽然基础篇玩家数量众多,解析区早已人满为患,但粗略浏览之后,感觉大多数千篇一律,存在大量复制粘贴现象。而我对其中的部分问题,切入点和大家不一样,并且会在解析中加入相关的计算机科学和软件工程专业知识,以及对于算法研究者来说最重要的数学基础知识
$\Huge\color{black}{持续更新ing,会逐步完善}$
第一部分 基础算法
1.1 排序算法
1.1.1 快速排序(裸题)
1.1.2 第k个数(快速排序思想)
1.1.3 归并排序(裸题)
1.1.4 逆序对统计(归并排序思想)
1.2 二分查找
1.2.1 数的范围(整数型)
1.2.2 数的三次方根(实数型)
1.3 高精度运算
大家或多或少听过“减少乘除法计算次数”这个说法,这一部分了解清楚之后,应该就能知道为什么了
1.3.1 加法
1.3.2 减法
1.3.3 乘法
1.3.4 除法
1.4 前缀和与差分
序列前缀和与差分,可以类比成函数积分和微分,这一部分的切入点正是此处
一元:
1.4.1 前缀和
1.4.2 差分
1.5 双指针
1.5.1 最长连续不重复子序列
1.5.2 数组元素的目标和
1.5.3 判断子序列
1.6 位运算:二进制位1的数量
1.7 离散化区间和
1.8 区间合并
第二部分 数据结构
2.1 一般线性表
顺序表不多作介绍
链表:
2.1.1 单链表
2.1.2 双链表
2.2 栈与队列
无单调性:
2.2.1.1 栈
2.2.1.1 队列
有单调性:
2.2.2.1 单调栈
2.2.2.2 单调队列
综合应用:
2.2.3 栈的应用:表达式求值
队列的应用,在之后的图论部分会经常出现
2.3 字符串相关
KMP算法暂时欠缺,之后补全
字典树:
2.3.2.1 Trie字符串统计
2.3.2.2 最大异或对
2.4 并查集
2.4.1 原理和基本实现
2.4.2 一些衍生操作
2.4.3 简单分类问题(应用)
2.5 堆
2.6 哈希表
2.6.1 哈希表原理及实现
2.6.2 字符串前缀哈希算法
第三部分 搜索与图论
3.0 前置知识
3.1 深度优先搜索(DFS)
3.1.0 树/图结构DFS示例
3.1.1 树的重心(DFS)
3.1.2 排列数字(DFS衍生)
3.1.3 $N$皇后问题(DFS复杂衍生)
3.2 广度优先搜索(BFS)
3.2.0 树/图结构BFS示例
3.2.1 图中点的层次(BFS)
3.2.2 走迷宫(矩阵中的BFS)
3.2.3 八数码(BFS衍生)
3.2.4 有向图的拓扑序列(BFS重要衍生:拓扑排序)
3.3 单源最短路径
$\text{Dijkstra}$算法:
3.3.1.1 原理及简单实现
3.3.1.2 优先队列辅助实现
$\text{Bellman-Ford}$算法:
3.3.2 原理、特点及实现
$\text{SPFA}$算法:
3.3.3.1 原理及实现
3.3.3.2 负权回路检测(SPFA应用)
3.4 多源最短路径(Floyd)
3.5 最小生成树
3.6 二分图
第四部分 数学知识
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.4 快速幂
4.4.1 正整数快速幂原理
4.4.2 应用:费马小定理求逆元
4.5 扩展欧几里得算法
4.5.1 扩展欧几里得算法原理
4.5.2 应用:裴蜀定理解线性同余方程
4.6 中国剩余定理及其扩展
4.7 线性方程组求解
4.8 组合数
求解原理:
4.8.1.1 直接计算
4.8.1.2 重要定理
应用场景:
4.8.2 卡特兰数:满足条件的01序列
4.9 容斥原理:能被整除的数
4.10 Nim游戏
4.10.1 经典模式
4.10.2 阶梯模式
4.10.3 数量受限模式
4.10.4 拆分模式
第五部分 动态规划
5.0 动态规划前导:数字三角形
5.1 线性序列动态规划
5.1.1 最长上升子序列
5.1.2 最长公共子序列
5.1.3 编辑距离
5.2 背包问题系列
5.2.3 多重背包问题
5.2.3.1 0-1背包转化法
5.2.3.2 单调队列法
5.3 区间类:石子合并
5.4 计数类:整数划分
5.5 状态压缩类
5.5.1 蒙德里安的梦想
5.5.2 最短Hamilton路径
5.6 递归方法详解
5.6.1 树形DP
5.6.2 记忆化搜索
5.6.3 数位DP
肝帝nb!大佬nb!
肝帝就够了,大佬还是先算了吧
大佬NB!
666
666
666
收藏咧
####-期待-
可以点赞收藏加关注哟
Orz
tql
666
%%%%