07 2022 档案
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
阅读全文
搜索算法
摘要:深度优先搜索(爆搜) 引入: 定义: 深度优先搜索(Depth-First-Search),简称DFS; 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。 其实称为“远度优先搜索”更容易理解些。因为这种策略能往
阅读全文
2022.7.29学习笔记
摘要:主要内容: 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.小根堆: 每个结点的权值都比儿子的
阅读全文
2022.7.25学习笔记
摘要:主要内容: 1.单调栈 2.单调队列 3.前缀和 4.差分 5.STL 6.贪心 7.分治 8.二分 单调栈 定义: 1.单调栈,顾名思义,即保证内部元素单调(从大到小或者从小到 大)的栈。我们只要在插入新元素的时候,将栈顶所有在插 入新元素后不满足单调的元素依次弹出,再插入新元素即可。 2.单调栈
阅读全文
最小生成树
摘要:最小生成树 定义: 最小生成树是一副连通带权无向图中一个权值最小的生成树. 说人话就是: 我们用线段把图所有的顶点进行连接,连接时不能产生圈,并且所有边权值的和为最小. 我们一般用来解决最低成本或最短路径. Prim算法 Prim可以说和Dijkstra是一对孪生兄弟,非常相似. 我们来通过例题具体
阅读全文
图及相关算法
摘要:图 定义: 1.图是由一个顶点的集合V和一个顶点间关系间的集合E组成:记作G=(V,E).V:顶点的有限非空集合. E:顶点间关系的有限集合(边集).存在一个节点V,可能含有多个前驱结点和后继节点. 2.无向图: 在图G=(V,E)中,如果对于任意的顶点a,b∈V,当(a,b)∈E时,必有(b,a)
阅读全文
动态规划
摘要:动态规划 定义: 1.动态规划(Dynamic Programming 简称DP)是解决“多阶段决策问题”的一种高效算法。 2. 通过合理组合子问题的解从而解决整个问题解。其中的子问题并不是独立的,这些子问题又包含有公共的子子问题. 3.动态规划算法就是对每个子问题只求一次,并将其结果保存在一张表中
阅读全文
快速幂
摘要:快速幂 定义: 1.所谓快速幂,就是快速求以a为底的n次幂(即a^n)的相关操作. 例题: 1616:A 的 B 次方 时间限制: 1000 ms 内存限制: 524288 KB 【题目描述】 给出三个整数 a,b,m求 a^b mod m 的值。 【输入】 一行三个整数 a,b,m。 【输出】 一
阅读全文
ST表
摘要:ST表 定义: 1.ST表是一种数据结构,用来解决区间内的一些问题(比如可以求区间最小值、区间最大值),ST表采 用的倍增的思想,我们在使用ST表的时候,可以做到o(nlogn)的时间建表,做到用o(1)的时间去查询. RMQ问题: RMQ问题主要用ST表和树状图来解决. 优点:ST表运行效率高.树
阅读全文
Hash
摘要:Hash( 哈希表 哈希查找 ) Hash表: 定义: 1.哈希表,也称散列表,是一种高效的数据结构。它的最大优点就是把数据存储和查找所消耗的时间 大大降低,几乎可以看成是 O(1)的,而代价是消耗比较多的内存。在当前竞赛可利用内存空间越 来越多、程序运行时间控制的越来越紧的情况下,“以空间换时间”
阅读全文
链表
摘要:链表 定义(单链表): 1.用一组地址任意的存储单元存放线性表中的数据元素。 数据元素(数据域) + 指针(指针域,指示后继元素存储位置) = 结点 以“结点的序列”表示线性表——称作链表。 2.以线性表中第一个数据元素“1”的存储地址作为线性表的地址,称作线性 表的首地址。 有时为了操作方便,会在
阅读全文
队列
摘要:队列 定义: 1. 队列(queue)是一种特殊的线性数据结构,队列中的元素也是按照入队顺 序线性的排列。 2.队列的结构如下图所示,队列只允许在队列的前端(队头)进行删除操作, 后端(队尾)进行插入操作。 3.队列的特点是先进先出(FIFO,First In First Out),即最先入队列的元
阅读全文