摘要: Prim算法 感觉Prim算法找最小生成树的过程像是一个dp的过程,从随便一个点开始,每次都是找到局部最优解,最后就可以找全整个最小生成树。 阅读全文
posted @ 2019-09-08 13:36 夜烛灯花 阅读(271) 评论(0) 推荐(0)
摘要: 邻接矩阵的DFS 邻接表的DFS 邻接矩阵的BFS 阅读全文
posted @ 2019-09-05 10:47 夜烛灯花 阅读(192) 评论(0) 推荐(0)
摘要: 网的邻接矩阵 无向图的邻接表 有向图的十字链表 无向图的邻接多重表 阅读全文
posted @ 2019-09-03 12:08 夜烛灯花 阅读(175) 评论(0) 推荐(0)
摘要: Java大部分情况下是通过new关键词新建一个对象,跟C++类似,也是将标识符当作一个指针,指向堆中的实际空间。如果直接像C++一样在栈中给对象分配空间,是不行的,没有实际空间。 Java的new关键词会给类中变量赋初始值(类似C++中的全局变量),而C++不会。 Java有构造函数,但他没有析构函 阅读全文
posted @ 2019-08-05 11:13 夜烛灯花 阅读(151) 评论(0) 推荐(0)
摘要: 如图所示,将一颗树向右倾斜就得到了一个树状数组,$A[i]$代表 原数组 $C[i]$代表 树状数组 。 而每一个树状数组节点存的是子节点的和: C[1] = A[1]; C[2] = A[1] + A[2]; C[3] = A[3]; C[4] = A[1] + A[2] + A[3] + A[4 阅读全文
posted @ 2019-07-13 17:57 夜烛灯花 阅读(183) 评论(0) 推荐(0)
摘要: 首先知道前缀和概念是什么,假设有一个数列$A$,他的前缀和数列为$S$。 那么很容易就能得到 前缀和 公式:$S[i]=\displaystyle\sum^i_{j=1}A[j]$ 如果要求区间$[l,r]$的和呢? 答案也是很简单:$sum[l,r]=S[r] S[l 1]$ 所以前缀和用来求区间 阅读全文
posted @ 2019-07-13 11:38 夜烛灯花 阅读(553) 评论(0) 推荐(0)
摘要: 这篇博客记录一下两种比较快速的排序。 归并排序和快速排序。 归并排序($O(nlogn)$) 归并排序,顾名思义就是先递归后合并,这里画了一张图简单理解归并过程: 代码肯定要用到递归啦,递归到不能再细分就可以开始合并了。而合并是通过 申请额外的内存空间 来完成的,合并时在左右两个区间内进行比较,按照 阅读全文
posted @ 2019-07-12 11:19 夜烛灯花 阅读(6070) 评论(1) 推荐(3)
摘要: 字典树在多个单词匹配长句或者求单词的相似前缀时非常好用。 下面是他的结构: 字典树的每一条边就是一个字母,按照单词字母顺序给节点排序号。 这里用二维数组代表线段树的结构:$tree[i][j]=k$ $i$代表节点序号,$j$代表是上一个节点下面的哪个字母节点($a z$分为$0 25$),$k$代 阅读全文
posted @ 2019-07-11 08:56 夜烛灯花 阅读(255) 评论(0) 推荐(0)
摘要: 本蒟蒻经过一下午的挣扎终于能略微窥探到KMP算法的精妙,也是弥补了以前学数据结构的遗憾,这里记录一下蒟蒻自己理解的KMP算法,博客简略,主要是大概过一下,让自己以后能回忆起来,具体参考 《大话数据结构》 。 KMP的精妙之处就在于它的next数组, next[i] 保存的是第$i$个数之前的字符串 阅读全文
posted @ 2019-07-10 09:24 夜烛灯花 阅读(222) 评论(0) 推荐(0)
摘要: 故事的开始是leetcode的一道Mid难度题 "1109. Corporate Flight Bookings" 一开始做这道题我就直接暴力遍历和加法,结果当然直接超时(qwq蒟蒻的哭泣)。 于是看了一下午线段树,结果这道题也不用自己构建树,因为不涉及区间查询。 直接线性思考(差分数组),直接从头 阅读全文
posted @ 2019-07-07 19:12 夜烛灯花 阅读(314) 评论(0) 推荐(2)