![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 71
主要介绍常用的数据结构与算法
陵易居士
计科大二在读,欢迎对计算机技术感兴趣的朋友加我私聊共同进步
展开
-
数学算法——快速幂
利用这个性质,可以防止数据过大溢出,毕竟C++中long long也只能存1e18的数据(如果不考虑用数据模拟高精度乘法的话),我们在计算时就跳过,不把它乘进结果当中去,下面是计算思路,设res=1,存储结果。二进制取幂的想法是,我们将取幂的任务按照指数的 二进制表示 来分割成更小的任务。对于11来说,它的二进制从低往高数第三位是0,对应。,处理末尾的1:计算a res=res*a。好了,言归正传,快速幂,怎么个快速法呢?11,处理0:对应二进制数为0,跳过。,根据指数的运算法则,原创 2024-07-30 22:19:58 · 177 阅读 · 1 评论 -
初步学完二叉树后的一些理解
最近学习了二叉树这个数据结构,二叉树,顾名思义,它的存储结构看上去就是一个最多分两个叉的树,如下图,就是一颗经典的二叉树在二叉树中,每个节点最多有一个前驱节点,最多有两个后区节点,我们把前驱节点叫做父节点,后驱节点叫做子节点,如上图中,节点A是节点B的父节点,同时B节点是A节点的左子节点,子节点根据它的所在位置分为左右节点。原创 2024-04-23 22:27:51 · 361 阅读 · 1 评论 -
一维二维差分
前面一篇中介绍了前缀和的概念,这里继续介绍差分,实际上差分就是前缀的逆运算。原创 2024-03-21 19:55:52 · 310 阅读 · 0 评论 -
单源最短路径
今天回顾了单源最短路径,还是首推迪杰斯特拉算法,非常好用的一个算法,当然涉及到负权就要利用spfa了,说到单元最短,那就离不开多源最短路径,我会在后续文章中更新多源最短路的算法。原创 2024-05-21 22:35:53 · 1459 阅读 · 2 评论 -
广度优先搜索 C++队列 P1141 01迷宫
搜索算法算是比较常用的一个基础算法,主要应用在图论中,最常见的是迷宫问题。今天本人又回顾了以前学习过的搜索算法并且在洛谷上刷了几道题,想着拿其中一道题来写个体会。首先,广度优先搜索,顾名思义,尽可能多的向外扩散,比如我现在处在一个大棋盘中的某一个格子上,我就要把四周每个各自都探测一遍,然后在探测过的每一个格子的基础上继续向外扩散一圈,直到所有格子都被探测一边为止,我们完成了一个搜索。那么怎么用代码实现这个算法呢?原创 2024-03-22 21:48:39 · 951 阅读 · 0 评论 -
新人初学贪心算法
刚开始做时,不知道贪心是什么个操作,就纯用代码模拟题目,最愚蠢的是刚开始我用定义了一个牛棚总数大小的数组来模拟牛棚,赋初值为0代表没有牛,后面根据输入的信息将有牛的牛棚赋值为1,然后从头到尾遍历牛棚数组,遇到一个有牛的牛棚后计算它和上一个牛棚的距离和下一个牛棚的距离,如果距离上个牛棚近它们就用一块板子,否则将它和下一个牛棚绑定在一起,木板数量+1,同时计算木板的长度;这个初学者就是我,刚开始想刷贪心的题目练练手的,想着先学习一下他的具体用法,结果发现贪心根本就没有套路,需要不断刷题来培养贪心思路。原创 2024-03-16 22:39:55 · 364 阅读 · 3 评论 -
一维与二维前缀和
再利用前缀和数组之前我们先来简单证明一下:有l<=r,根据定义,sum[l-1]=a[1]+a[2]+...+a[l-1],sum[r]=a[1]+a[2]+........+a[r],那么sum[r]-sum[l-1]=a[l]+a[l+1]+.....+a[r],就是我们要求的区间和。对于一个长度为n的一维数组a[1] a[2] a[3]......a[n],存在一个数组sum[i],其中sum的每一项sum[i]的值等于a[1]到a[i]的和。假设我们要输入一个长度为n的数组a,对它构造前缀和数组。原创 2024-03-21 09:01:57 · 441 阅读 · 1 评论 -
图论系列:图的存储
图的存储方式原创 2024-05-10 22:06:43 · 1103 阅读 · 2 评论 -
深度优先搜索
深度优先搜索呢,使用它的主要目的就是“一条路走到黑”,比如在上一段描述的迷宫问题中,深度优先搜索就是找到一个可以走的格子就直接去到那个格子,然后继续看有哪个格子可以走继续走,直到无路可走或者到达终点,此时返回上一个节点。按照它们俩的理念来说,广度优先就是尽可能的多做尝试,比如要你在迷宫中找到目标点,我们就需要看遍四周的路看看那个可以走通,能走通就加入备选队列中,然后不断从队列中取坐标点继续重复上述操作直到找到目标或者无路可走,按照广度优先搜索的特性,它适合用来求最短路问题,或者是求某个操作的最小值。原创 2024-03-25 22:28:20 · 322 阅读 · 0 评论