摘要:
##快速计算多项式的值(秦九韶算法) 阅读全文
摘要:
###杂物(拓扑排序) 前置知识 有向无环图(DAG):没有环的有向图。 对于DAG,在有的时候,对于一个节点的信息的计算,需要确保与之相连的点的信息全部被计算,这时就需要用到拓扑排序。 本质是确保DAG上的点的计算顺序而非对数列排序。 队列实现拓扑排序过程 step1:讲入度为0的点插入队列 st 阅读全文
摘要:
Trie(字典树或前缀树) ##一.Trie Trie,又称字典树或前缀树,常用来存储和查询字符串。假定字符串均由小写字母构成,那么Trie将是一棵26叉树。 给定五个字符串,分别为acd、abd、be、cbe、cbf,Trie将以以下形式存储这些字符串: 可以发现,这棵字典树用边来代表字母,而从根 阅读全文
摘要:
#vector vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() 支持比较运算,按字典序 #include <bits/stdc 阅读全文
摘要:
#最小生成树 ,若 的一个生成子图是一棵树,则称之为 的一棵生成树(记为T) 最小生成树:无向图 的所有生成树中,树枝的权值总和最小的称为 的最小生成树。 常见的求解最小生成树的算法有 算法和 算法。显然,生成树是否存在和图是否连通是 阅读全文
摘要:
#最短路问题 图论中求某点到某点最短的路径长度。 图中点1到点4的最短路径长度应为3. ##分类 最短路问题分为两类:单源最短路和多源最短路。前者只需要求一个固定的起点到各个顶点的最短路径,后者则要求得出任意两个顶点之间的最短路径。 ###单源最短路 ####Dijkstra算法 Dij基于一种贪心 阅读全文
摘要:
##线段树(Segment Tree) 线段树是主要用于维护区间信息(要求满足结合律)的数据结构。与树状数组相比,线段树可以在 的时间复杂度内实现**单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)**等操作。 ###引入: 问题1: 有 $n(n \leq 阅读全文
摘要:
#并查集 大佬笔记如下: 通俗易懂 https://zhuanlan.zhihu.com/p/93647900 ##并查集是什么? 主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并:把两个不相交的集合合并为一个集合。 查询:查询两个元素是否在同一个集合中。 作用: 实 阅读全文
摘要:
#优先队列 ##优先队列/堆 优先队列又名二叉堆,是特殊的二叉树。二叉堆有两种:最大堆和最小堆 最大堆(大根堆):父结点的键值总是大于或等于任何一个子节点的键值 最小堆(小根堆):父结点的键值总是小于或等于任何一个子节点的键值 优先队列:在C++中优先队列默认的是大根堆,如果用小根堆则加入great 阅读全文