摘要:
广(宽)度优先搜索 相关知识:队列 主要操作: 1.入队(push) 2.出队(pop) 3.判断队列是否为空(empty) 4.统计队列元素个数(size) 5.访问队首元素(front) #include<queue> //queue头文件 queue<T> q; //构建一个T类型的队列 q. 阅读全文
posted @ 2021-12-25 22:20
GalaxyOier
阅读(32)
评论(0)
推荐(0)
摘要:
快速幂 定义 就是把一个高次的数转换成很多低次累乘的形式,类似进制转换的原理。 优点 我们计算$An$的朴素的方法就是循环$n$次来求幂,这样便得到$O(n)$时间复杂度的方法,其实大家都想得到一种优化的方法即$An=A^{\frac{n}{2}}*A^{\frac{n}{2}}$。 一直递归下去, 阅读全文
posted @ 2021-12-25 22:19
GalaxyOier
阅读(27)
评论(0)
推荐(0)
摘要:
单调队列 参考资料: OI WIKI 基础概念 单调队列的重点分为 "单调" 和 "队列" "单调" 指的是元素的的 "规律"——递增(或递减) "队列" 指的是元素只能从队头和队尾进行操作 \(PS\):此处的 "队列" 跟普通队列的一大不同就在于可以从队尾进行操作,$STL$中有类似的数据结构$ 阅读全文
posted @ 2021-12-25 22:18
GalaxyOier
阅读(108)
评论(0)
推荐(0)
摘要:
指针 & 链表 & 链式向前星 指针 用于存放地址,全称“地址变量” 指针的定义与取地址如下 int *p; //创建指针 int a; //定义整型变量 p = &a; //用p存放a的地址 *p =123 //更改a的值 优点: 可以很方便的更改数据或进行地址管理 缺点: 地址是随机生成的 链表 阅读全文
posted @ 2021-12-25 22:17
GalaxyOier
阅读(56)
评论(0)
推荐(0)
摘要:
vector 这篇文章之所以会出现是因为博主太菜了,并不会vector 概述 $vector$是一个十分神似数组的东西,同时又混合了队列的操作,又新增了许多神奇的功能,使他成为了我个人认为的最难的数据类型。当然,这只是因为我没学过 总的来说,他有一个神奇的特点:他是可以动态扩容的,即可以避免很大一部 阅读全文
posted @ 2021-12-25 22:16
GalaxyOier
阅读(49)
评论(0)
推荐(0)
摘要:
图的遍历 图 简单的来说,图就是由一些小圆点(顶点)和连接这些点的直线(边)组成的图形。如下图: 就是由四个点$(A,B,C,D)\(和四条边\)(A-B)(A-D)(B-C)(C-D)$组成的 而图的遍历,就是把整个图走一遍 图的遍历 一般来说,有几种遍历方式: 深搜 深搜的基本思路:一条路走到死 阅读全文
posted @ 2021-12-25 22:14
GalaxyOier
阅读(23)
评论(0)
推荐(0)
摘要:
最短路 概述 基本的模板大概就是给一个图,求任意两点间的最短路(两点间有不同的距离)。这时候,就需要用到一些神奇的算法 \(Floyd-Warshall\) 之前有一篇笔记讲过如何用$O(n^2)$的算法来进行求解最短路,但这时就有些人嫌深搜或广搜太麻烦(比如我)。那么这时候就需要学学新算法了:$F 阅读全文
posted @ 2021-12-25 22:13
GalaxyOier
阅读(8)
评论(0)
推荐(0)
摘要:
离散化 思路 数据的范围非常大或者其中含有负数,但数据本身的个数并不是很多(远小于数据范围)。在这种情况下,如果每个数据元素的具体值并不重要,重要的是他们之间的大小关系的话,我们可以先对这些数据进行离散化,使数据中的最大值尽可能小且保证所有数据都是正数。 代码 #include<bits/stdc+ 阅读全文
posted @ 2021-12-25 22:12
GalaxyOier
阅读(7)
评论(0)
推荐(0)
摘要:
线段树 概念 其实就是一个二叉树,运用了分治的思想。将一个有序数组从中间截断,并不断的截,直到最后每组只剩单一元素时即可,由于可以方便的进行区间修改和区间求和,于是叫做线段树 建树 思路: 先确定边界条件,即$L=R$时,在线段树上添加结点,否则就把区间截成两段,再次进行操作。代码如下: void 阅读全文
posted @ 2021-12-25 22:12
GalaxyOier
阅读(13)
评论(0)
推荐(0)
摘要:
堆 概念 堆是一种特殊的完全二叉树 ,例如: 可以很明显的发现,示例中的每个父节点都小于它的子节点,符合这个特点的二叉堆叫做最小堆(小根堆),当然反之就叫最大堆(大根堆) 调整 那么,怎么把一个正常的数组调整为大根堆呢? 基本思路:每一次找到一个点,设其下标为$i$,获得它的子节点的下标,设为$j= 阅读全文
posted @ 2021-12-25 22:11
GalaxyOier
阅读(10)
评论(0)
推荐(0)