前言:最短路径算法,也称dijkstra算法,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。
STL-堆与栈(初稿)
前言:这篇博客主要关于c++STL中的一些容器,堆(heap)和栈(stack),堆的特点是先进先出,priority_queue以及queue都是相关的关键词。而栈的特点是先进后出,stack是相关关键词。
树状数组专题
前言:树状数组,作为求伴有单点修改过程中的区间和的利器,现在多用于技术数组的前缀和以及区间和,虽然线段树可以完美代替树状数组的功能,但是在部分场景下,有可能树状数组存在巧解,下面我将介绍数组树状的模板以及几种不同场景的应用。
拓扑排序专题(初稿)
前言: 拓扑排序,听上去似乎不容易理解什么意思,大概意思大概为对一个有向无环图的所有点,按照它们的相对位置关系,排成一个队列,通常这个队列不唯一。
矩阵快速幂专题
前言:这篇博客是有关矩阵快速幂的相关例题和模板,矩阵快速幂深刻地体现了基础数学对于算法优化的重要性,矩阵快速幂是先将题目的递推公式矩阵乘法化,然后通过将快速幂和矩阵乘法结合,利用快速幂优化多次矩阵乘法中重复的部分,将运算部分的时间复杂度从O(N)优化到O(log N),从而实现优化。
线段树专题
前言:在树状数组那一篇博客里活跃的一个名词,没错,就是树状数组的上位,线段树它来了,线段树通过二分的思想,将一个数列分成一个完全平衡二叉树,通过其的深度不超过log(N)来保证访问的时间优化性。
z5亲身评测以及第一次扫街成果
P3375 【模板】KMP字符串匹配
前言:我本来打算复习朴素的字符串匹配的方法的,然后打开洛谷准备刷点题,结果发现了这个KMP算法,其实这个算法在我自己推导朴素字符串匹配的时候就有类似的想法了,但是由于没有发现这个最长相同前缀后缀长度的状态转移类似于dp的规律,在已经匹配相同的区域的时候选择下次移动的距离可能这个寻找这个距离耗费的时间都赶上直接朴素寻找了,但是直到今天我深入了解了kmp算法,一个字,妙啊!
P1763 埃及分数 迭代加深搜索加剪枝
前言:作为我a的第一个紫题,这道题写的还是有点吃力的,很多细节处还是有点没搞懂,以至于我做了扩大范围处理,但是总而言之,这类题对基础的要求十分高,剪枝的前提就是你已经熟悉了整个迭代搜索过程,但最后还是a出来了,可喜可贺可喜可贺。
POJ 2000:最长公共子上升序列 综合dp问题加前缀保存回溯
前言:这道题乍一眼看就把我整迷糊了,又是最长上升子序列,又是公共子序列,buff叠满了属于是,我想用最长上升子序列的框架,发现公共的部分不知道如何兼顾,与是开始尝试先找公共子序列,然后通过加一些大小判断来实现这个公共子序列是上升且最长的。