(还没有弄好,会慢慢弄好)
// https://oi-wiki.org/ (一个学习模板算法的好网站,可惜到自己快要退役才晓得QWQ)
一、数据结构
线性数据结构
栈
队列 单调队列
图论
-
并查集
-
强连通分量
tarjan(判环,缩点,重新建图)
Kosaraju 算法 -
单源最短路
dijkstra
SPFA+SLF
SPFA处理路径条数
SPFA判负环
二分+SPFA
SPFA的运用 -
多元最短路 (floyd)
floyd判最小环 -
K短路
树
-
树的基本操作(前序,中序,后序)
-
树状数组 模板
-
最小生成树模板及总结
prime
kruskal -
哈夫曼树
-
堆 模板
-
二叉树
-
splay
-
树的重心 //转载
-
树的直径
-
最近公共祖先(LCA)
tarjan
倍增
二、数论
- gcd
- 乘法逆元
- 欧拉线型筛
- 快速幂+多项式系数 模板
- 组合数学问题(斐波那契数列、第二类数、卡特兰数、Polya原理、排列组合计数、加法原理与乘法原理)
- 素数(判定,相关定理,Miller-Rabin素数测试,欧拉定理)
三、动态规划
- 线性动态规划
- 区间型动态规划
- 坐标型动态规划
- 背包型动态规划
- 树形动态规划
四、搜索
- 深度优先搜索
- 广度优先搜索
- 双向BFS
- 反向DFS
五、高精度算法
- 高精度加法
- 高精度减法
- 高精度乘法
- 高精度除法
六、字符串相关
- 字符串hash
- trie树
- KMP算法
七、排序
- 冒泡排序
- 插入排序
- 归并排序
- 选择排序
- 快速排序
- 堆排序
,而 iter->se八、其他
-
二分答案
-
贪心
-
模拟
-
分治
-
RMQ
-
GDB调试指令(转载)
————————————————————————————————————————————
转载一篇博客:https://blog.csdn.net/dqcsm1964/article/details/78420869
数学类问题 -
精度处理(高精度、实数处理、各种浮点类型处理方法)
-
组合数学问题(斐波那契数列、第二类数、卡特兰数、Polya原理、排列组合计数、加法原理与乘法原理)
-
进制问题(特定二进制串的统计、二分查找、利用二进制进行路径、状态描述、二进制转换)
-
递推与递归关系(递推关系式、通项公式、数列、博弈问题)
-
数位、数字、特定数值的查找、统计(数值处理、质因子分解、幂次分解、数值表达式、添加运算符、分式与实数运算)
-
数学杂题(回文数字、矩阵处理、约瑟夫与反约瑟夫问题)
-
数学剪枝(无解判定、解线性方程组、限定搜索范围)
常用策略
-
相关公式、定理、原理的应用
-
寻找规律、归纳整理递归与递推关系式
-
按照数学方法构造、二进制转化等技巧性处理
-
注意事项:
A. 规律准确(小数据手工推算、搜索程序验证)
B. 数据类型是否合理、数据范围是否超界(大数据处理)
字符、字串类问题
-
读入、分离和统计问题(文件结束符、行结束符、空格符、回车符、字符组合分离、统计)
-
插入、删除、修改、替换等相关编辑问题(字符距离、优美编辑、初始状态与目标状态的变换、迭代等处理性问题)
-
KMP算法及其改正
-
回文串、高精度运算及其以字符(串)作为处理对象的相关问题
常用策略
-
一般性字符处理
-
动态规划方法
-
字符树(查找、树的前序、中序、后序遍历)
-
注意事项:
A. 读入时小心
B. 字符串类型与字符数组存贮及其压缩存取
统计类问题
-
方案总数统计(矩阵、三角形划分方案统计、问题解集个数统计)
-
特定、离散元素统计(二进制统计问题)
-
横向、纵向规模化问题(数据范围、数据维数巨大)
-
离散化问题(卫星覆盖、图形周长)
-
一般性统计问题(时间复杂度)
常用策略
-
扫描技术、归类统计及平面、空间坐标体系变换等几何学知识
-
离散化思想
-
线段树处理方法
-
降维、剪枝
-
借助于数学方法进行统计
-
注意事项:
A. 统计计数:避免待统计元素的遗漏、重复
B. 多次读文件、边读边处理等大数据文件的处理技巧
模拟类问题
-
按题设描述进行直接模拟
-
队列模型模拟
-
按时间顺序模拟状态
常用策略
-
按条件描述直接模拟
-
注意事件发生的起止时间、状态的变化
-
按某一指标(时间)排序进行预处理
-
注意事项:
A. 准确理解题意,切忌加入个人想当然思想,严格按题意进行模拟
B. 一般来说要考虑的因素较多,做题前要有绝对清晰的思路并逐步修正要考虑的各种因素
搜索类问题
-
枚举类问题(有较好枚举方法或枚举量不大的问题)
-
产生式系统(产生式规则,生成新的元素类问题)
-
无任何好的解决办法或其他方法不能完成的问题
-
搜索与其他方法的结合(与动态规划的结合、与贪心思想的结合等)
常用策略
-
确定搜索对象和搜索策略
-
选取适合的搜索方法(深度、广度、记忆化搜索)
-
注意与其他方法的结合(贪心回溯、动态规划)
-
减少搜索量(剪枝)
-
注意事项:
A. 剪枝条件的正确性(加剪枝条件与不加剪条件的程序结果对照)
B. 搜索也是解决问题的一种方法,有时搜索程序也可以收到较好的效果,只要有较好的优化措施
最优化问题
-
图论中的最优化问题
-
规划问题
-
特定指标(长度、次数等)最(极)值问题
常用策略
-
动态规划
-
图论中经典算法及其改正
-
贪心+搜索解决办法
-
贪心思想
-
数学方法
-
注意事项:
A. 动态规划阶段划分、状态描述及转移方程对动态规划效率的影响
B. 状态存贮对空间优化的影响(根据题目特点决定状态存贮数目、状态存贮方法的选取(滚动存贮、压缩存贮))
C. 双层动态规划
D. 多次动态规划
图论问题
-
最小生成树问题、最小点基、中心点设置
-
路径问题(最短路、关键路径、道路、ERLUR回路、哈密顿回路)
-
拓扑排序问题(顶点的度)
-
连通性问题(添加、删除边、点增加或减少连通度)
-
流量问题
-
二部图的匹配问题(最大匹配、最佳匹配)
常用策略
-
点、边、权、度等图中基本元素关系
-
拓朴排序作预处理
-
图论算法的变形与改正
-
图搜索算法
-
标号法
-
动态规划方法
-
注意事项:
A. 选取图结构的存贮数据结构(矩阵、邻接表)
B. 在构建图模型时,考虑是否有多种构图方法