必学算法总结

哈哈哈,看看就好鸭

数据结构

1 线段树(维护区间操作)
2 二叉搜索树
3 树状数组(维护前缀操作)
4 单调栈(在需要栈性质的前提下维护单调序列)
5 单调队列(维护单调队列,常用于节点之间有可用权值表示的逻辑关系问题的求解)
6 并查集(判断连通性、传递逻辑关系)、带权并查集(常用于节点之间有可用权值表示的逻辑关系问题的求解)
7 哈希表
8 trie树(设计二进制数相关问题,是AC自动机的基础)
9 treap平衡树(维护有序序列,对其进行二分查找,求k大,求前驱后继等操作)
10 伸展树(维护区间,支持对区间的反转,区间插入等操作,还可以当做平衡树使用)

图的存储方法

邻接表、邻接矩阵

背包问题

01背包、完全背包、多重背包、分组背包、树上分组背包

动态规划

线性动态规划、区间动态规划、树上动态规划、图上动态规划、期望动态规划、
概率动态规划、数位动态规划、状态压缩动态规划

动态规划优化

利用常见数据结构(单调栈、单调队列、线段树、ST表等等)、四边形优化(对于满足四边形不等式的转移方程形式)、斜率优化(对于满足一次函数的转移方程)、FFT优化(对于满足卷积形式的转移方程)、CDQ分治优化。

基本技巧

枚举子集、莫队离线、启发式合并

图论算法

tarjan(求解强联通分量、双联通分量、割点、桥、以及环相关问题)、dijkstra(求解单源最短路,优化特定形式动态规划问题)、kruscal(最小生成树、最大生成树)、spfa(单源最长/最短路,判定负环,费用流算法的基础,求解差分约束系统)、floyd(求解多源最短路,解带限制的最短路问题,求最小环)、拓扑排序(求解DAG上带限制的问题,解决动态规划状态依赖关系)、欧拉路径(求解欧拉回路等,应用不多)、匈牙利算法(二分图匹配)、KM算法(最大权完美匹配)

字符串算法

kmp(用于单模式串匹配任务,也可用于求字符串的周期)、
AC自动机(多模式串匹配有关的字符串任务,现多与动态规划及图论问题同时出现)、
manacher算法(用于求解回文串相关的题目)、后缀数组(字符串子串排序有关)、
字符串哈希(极为常用的算法,用于判断字符串相等)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值