摘要:
定义 倍增就是 “成倍增加” 的意思,比如1倍增后变成了2,2 倍增后就变成了4,4 变成8,以此类推... 分类 倍增算法总体上可以分为三种类型: 1.快速幂 2.LCA 3.RMQ(ST表) 快速幂 快速幂有什么用呢? 其实用它解决的问题非常简单; 例:2的0次幂是多少:很简单 2的10次幂是多 阅读全文
2022年8月6日
2022年7月31日
摘要:
主要内容: 1.最小瓶颈路2.kruskal 重构树3.差分约束系统4.强连通分量5.DFS树6.kosaraju算法求SCC7.tarjan算法求SCC8.SAT问题 最小瓶颈路 模板: #include<bits/stdc++.h> #define re return #define lowbi 阅读全文
2022年7月30日
摘要:
主要内容: 1.状态压缩DP2.DP基础优化3.DP单调性优化4.拓扑排序5.最小生成树6.最短路及差分约束 状态压缩DP 定义: 状态压缩DP,顾名思义就是将状态压缩起来. 模板: #include<bits/stdc++.h> using namespace std; typedef long 阅读全文
2022年7月29日
摘要:
深度优先搜索(爆搜) 引入: 定义: 深度优先搜索(Depth-First-Search),简称DFS; 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。 其实称为“远度优先搜索”更容易理解些。因为这种策略能往 阅读全文
摘要:
主要内容: 1.AC自动机.2.线性DP.3.区间DP.4.背包DP.5.树形DP.6.数位DP. AC自动机 神犇:AC自动机,听这名字,就能推测是能自动 AC 的算法. 虽然不能自动帮我们AC所有算法题,但确实能让我们AC一些题目. 定义: AC自动机主要用于解决多模式串的匹配问题,是字典树(t 阅读全文
2022年7月28日
摘要:
主要内容: 1.哈希2.KMP与扩展kmp算法3. Manacher算法 哈希与哈希表 定义: 1.使用一个哈希函数将某个特定的数字变成另一个数字,这种操作称之为hash 2.通常我们会以取模运算来作为哈希函数 tips: 1.哈希冲突,不能保证每个元素的关键字与函数值是一 一对应的,这样就产生了“ 阅读全文
2022年7月27日
摘要:
主要内容: 1.可持久化线段树2.树状数组3.倍增求LCA4.树上差分5.树链剖分:重链剖分、长链剖分6.dfs和bfs基本应用7.搜索的最优性、可行性、记忆化剪枝8.迭代加深搜索9.二进制搜索10.折半搜索 (今天先介绍两种,因为其他八种本蒟蒻上课没听懂) 可持久化线段树 定义: 可持久化线段树又 阅读全文
2022年7月26日
摘要:
主要内容: 1.堆2.并查集3.线段树4.可持久化线段树5.树状数组 堆 定义: 堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器。 1.堆是一棵完全二叉树 2.不仅仅是完全二叉树 种类: 1.大根堆: 每个结点的权值都比儿子的权值大2.小根堆: 每个结点的权值都比儿子的 阅读全文
摘要:
主要内容: 1.单调栈 2.单调队列 3.前缀和 4.差分 5.STL 6.贪心 7.分治 8.二分 单调栈 定义: 1.单调栈,顾名思义,即保证内部元素单调(从大到小或者从小到 大)的栈。我们只要在插入新元素的时候,将栈顶所有在插 入新元素后不满足单调的元素依次弹出,再插入新元素即可。 2.单调栈 阅读全文