摘要: 给自己找个事做…也算是开个头,打算慢慢把大二要学的数据结构课的数据结构自己慢慢地来都搭一遍。 先来点简单的。 顺序表: struct Lnode{ int data[maxsize];//表本体 int last;//最后一个元素的下标 void clear(){ last = -1; }//重置顺 阅读全文
posted @ 2020-05-12 15:59 IrIrIrllleaf 阅读(125) 评论(0) 推荐(0) 编辑
摘要: A*是一种搜索算法,一般基于一个估价函数f(x) = g(x) + h(x),通过这个函数来进行有方向的搜索以提高搜索的效率(而不是bfs、dfs那样的盲目搜索)其中g(x)指从初始状态到当前状态的花费,h(x)为当前状态到终状态的花费的估计值,以两者之和来估计起始状态到终状态的总花费f(x)在A* 阅读全文
posted @ 2020-04-22 08:05 IrIrIrllleaf 阅读(289) 评论(0) 推荐(0) 编辑
摘要: Floyd-warshall求解最短路的思路: 通过第1~n每个顶点试图对任意一对顶点间距离进行“松弛” 所谓松弛 就是指通过某个顶点使其他顶点对间距离缩短 floyd的核心代码也正是这么干的emm for(int k = 1; k <= n; k++) for(int i = 1; i <= n; 阅读全文
posted @ 2020-04-21 21:24 IrIrIrllleaf 阅读(133) 评论(0) 推荐(0) 编辑
摘要: OAO dijkstra算法在复杂度方面是十分优秀的,但是其最大弊端就是无法处理带负权的图 (因为是基于已经被更新过的距离源点的边必然已经达到了最短路的这个事实 来采取贪心策略来求得最短路 而有负权路存在时,这个基础不再成立。) 这个时候就要请出Bellman-Ford算法了 (正确性证明:http 阅读全文
posted @ 2020-04-14 19:36 IrIrIrllleaf 阅读(193) 评论(0) 推荐(0) 编辑
摘要: dijkstra可用于求单个顶点到其他顶点的最短路径 其核心思想是DP,用已经求出的最短路径去更新到其他点的最短路径 时间复杂度优秀但不适用于带负权边的图。 具体做法:用dis存储起始点到各个点的当前距离,初始化为inf,到自己的距离初始化为0 每次取出距起点距离最近的点,用这个点去更新起点到其他点 阅读全文
posted @ 2020-04-13 16:00 IrIrIrllleaf 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 树是一种无环图,形似树而得名 而有一类著名的问题便是在图中选取一些点和一些边组成一棵树 当边权和最小时称为:最小生成树 Kruskal算法是求出最小生成树的一种方法 前置知识:贪心思想,并查集 Kruskal算法的基本思路: 将所有边按边权从小到大排序,遍历每个边,判断边的两个结点是否已经被选取进入 阅读全文
posted @ 2020-04-13 15:34 IrIrIrllleaf 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 单调队列,即内部元素相对于比较器有序的队列,可以方便的查询序列中某个连续区间内的最大/最小值 也能在状态转移时优化决策以降低时间复杂度。(嗯,这句是OI-Wiki上说的,作为蒟蒻qwq我并不知道如何优化dp) 比如我们想知道一个长为n的数字序列中每连续k个数中最小的那个数 如果暴力求解的话,遍历从1 阅读全文
posted @ 2020-04-12 19:56 IrIrIrllleaf 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 分块与树状数组均在区间问题上有重要的应用 emm分块效率上不如树状数组,但是思路比较好想 先说分块: 将n个数的序列分为sqrt(n)块,预处理每块数据的信息以加快后续对区间信息的查询 先上一段代码: const int maxn = 5e5 + 50; int sum[maxn],a[maxn], 阅读全文
posted @ 2020-04-09 18:57 IrIrIrllleaf 阅读(195) 评论(0) 推荐(0) 编辑
摘要: LIS应该是一个比较经典的问题(qwq我昨晚上才弄懂nlogn的算法是怎么做的) 最长上升子序列指一个序列中,从前往后最长的大小上递增的序列(不需要连续出现但要保证先后顺序与原序列一致) 比如{1,3,2,5,6,4}中 最长上升子序列可以是{1,2,5,6} 可以用DP求解一个序列的最长上升子序列 阅读全文
posted @ 2020-04-09 10:22 IrIrIrllleaf 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题面: If we represent a date in the format YYYY-MM-DD (for example, 2017-04-09), do you know how many 9s will appear in all the dates between Y1-M1-D1 a 阅读全文
posted @ 2020-04-05 21:46 IrIrIrllleaf 阅读(139) 评论(0) 推荐(0) 编辑