自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 深度优先搜索DFS 和 广度优先搜索BFS

Type填的是需要的数据类型(int,float等)。Name就是队列名称。其中,队列q用来储存接下来需要访问的点。visited数组用来判断当前元素是否被访问过。dist数组用来判断从初始到最后的距离。这里需要强调的一点是,虽然这里我们讲的是距离,看似和Dijkstra算法处理的情况类似。但是再处理无权图或者边权为1的图的时候,BFS是优于Dijkstra算法的。正因如此,BFS和Dijkstra算法有很多的相似之处。stack定义类比queue的定义,不多解释。

2025-12-03 09:00:17 899

原创 Dijkstra算法

优先队列的定义如下。其中T表示储存的变量类型(int,float,pair等)。Container表示储存变量的容器,通常默认是vector类型。Compare表示优先队列按照什么顺序排列。priority_queue自带两种比较情况:从小到大(greater)和从大到小(less)。在定义的过程中,特别要注意的是Container类型需要是一个可以随机访问任何元素的类型。因此,list和queue等类型是不允许的,但双端队列deque。

2025-11-29 15:02:27 1290

原创 高精度算法(加减乘)

在做hdu的编号2001题时,拨珠发现,本来一道很简单的距离计算问题,一直把数据范围从int开到unsigned long long还没有通过。这时候,拨珠就意识到了这题应该要用到高精度来求解。因此,拨珠开始学习高精度算法。

2025-11-27 18:26:45 1209

原创 莫队算法——洛谷P12174题

很明显,当多个测试中的数组间隔过大时,就算使用指针来移动,也可能存在超时的情况。其实到最后一步的时候,就可以明显感觉到这里的正确思路在处理数据较大的时候,与拨珠的思路还是有很大的区别的。不同与拨珠考虑的递推得到的结果,正确的思路反而是用到了更为精妙的归类方法,把所有满足条件的XaXb+YaYb≤L进行了新的划分。莫队算法的最基本的思想其实也挺好理解的,甚至可以说,这种思想每个人在做题时多少回考虑过(至少拨珠想过),但由于各种各样的原因,没有实现,又或者是没用上(拨珠时代码能力太弱,写不出这种代码இ௰இ)。

2025-10-05 01:08:53 755

原创 滑动窗口(算法/思想?)

其实拨珠并不能理解为什么要用”窗口“来形容这个算法。不过这种思想还是挺好理解的。本质还是一种双指针。通过前后指针位置的变化,来取得所需要的答案。

2025-10-02 20:46:17 2071

原创 算法基础:前缀和

由于拨珠是一个普通大学生,刷题量也不是很大。因此在面对有些题目只是需要前缀和进行预处理或者说二维,三维的前缀和的题目不是没遇到,就是预处理过后剩余的部分不会写,因此很抱歉,无法再次给出更多拨珠认为经典的样例。

2025-09-21 17:22:29 1071

原创 蓝桥云课 19713 拔河 题解

前缀和,就是再输入一个数组时,同步计算从初始位(下标为0),到当前位的所有数字之和。之所以要这么做,好处就是可以在后面计算整个数组中连续的某段子数组的所有数字之和时会极其方便(终点的前缀和 - 起点的前缀和)。当然,上面提到的只是最基本的前缀和,还有更多的前缀和知识比如说二维(多维)前缀和,书上前缀和等,拨珠在这里就不提了。本题只用上了最基本的前缀和。

2025-09-18 12:27:56 837

原创 浅谈贪心算法

贪心算法与其他的算法(比如dfs,bfs,动态规划等)不同,贪心算法的本质是考虑当前情况下的最优解,并以当前最优解为基础继续向后推出最优解。当然,正如本质,贪心算法知识考虑了当前最优,因而在最终全局考虑时不一定能得到最优解。不过,对于一部分题目,考虑全局的情况太复杂,亦或是需要的时间空间太多,因而采用贪心来得到所谓的最优解。

2025-09-18 09:24:55 2153

原创 重生之我要重新学单向链表

由于拨珠现在正在学习简单算法,在面对刷题网站上出现单向链表题目时仍然无法应对,因此写一片文章,重新梳理有关单向链表的知识。(双向链表的话C++有list可以直接使用)

2025-09-16 13:51:05 1692

原创 一次性学完排序算法

选择排序的基本思想就是每一次都对整个数列中没有进行过排序的数进行遍历,从中找到最大(最小)的数,并把这个数移到数列的最后(最前),直到序列有序。这种排序算法思路很简单,空间复杂度是O(1)。不过,这种算法需要两层循环对数进行遍历,时间复杂度是O(n*n),对于n较大的数据,该排序方法并不适用。第一个for循环用来遍历整个数组,并且在一开始假设该位数是后面出现的最小的数。第二个for循环用于遍历i后面出现的所有数,如果存在arr[j]比arr[min_index]小,就更新min_index的值。

2025-09-15 21:27:11 1068 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除