![](https://img-blog.csdnimg.cn/20200901195346552.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
数据结构与算法
serendipityLB
如果不累,那你的梦想岂不是很廉价
展开
-
堆优化Dijkstra+向前星存图+超级起点/终点(牛客——星球游戏题解)
堆优化Dijkstra+向前星存图+超级起点/终点(牛客——星球游戏题解)题目链接题意n个结点,m条边构成的图,其中牛牛有一定数量的点,牛妹也有一定数量的点,现在问从牛牛中任选一点到牛妹的任意一点的最短距离是多少?其中给定牛牛拥有的点数,牛妹拥有的点数,给出相应的图结构,已经图的节点数。题解考虑这个问题,从牛牛中任选一点到牛妹的任意一点的最短距离,显然是考虑最短路算法(Dijkstra即可)但是如果朴素的Dijkstra的话肯定会超时,于是考虑堆优化的Dijkstra算法,同时图比较大,于是采用原创 2020-07-26 17:06:58 · 273 阅读 · 0 评论 -
数据结构闯关
数据结构闯关文章目录数据结构闯关一、 此系列博客序章二、拙见三、关卡第一关:干掉链表这个小喽啰之后数据结构系列博客会持续更新,大家不妨关注+收藏一波一、 此系列博客序章博客虽会迟到,但绝不会缺席本来早在一个月前就该写这篇博客了,但是由于太懒一直拖到现在,哈哈哈,实在很抱歉毕竟是这一系列博客的开篇,一些feihua 还是要讲的有这样一句话:不懂数据结构和算法基本上就不会编程,可见数据结构非常之重要但这门课,却又是特烧脑的一门课,有些比较难的数据结构(例如:线索二叉树、最优二叉树、平衡二叉树、B原创 2020-05-20 22:00:21 · 725 阅读 · 0 评论 -
第一关:干掉链表这个小喽啰
第一关:干掉链表这个小喽啰文章目录第一关:干掉链表这个小喽啰前备知识:具体代码实现单链表循环链表双向循环链表相关习题:前备知识:链表作为线性数据结构的一种,提它之前必须得讲下:顺序表(也就是一个个结点的地址是连续的存储在一起的),这样可能比较抽象:其实也就是C语言学的数组(这其中就包括了:普通数组和结构体数组)而链表有什么区别呢?链表相对于数组而言,引入了指针,这样就实现了:即使相邻的结点在计算机内存的地址不连续,但是可以通过指针实现两个结点的连接(这好像不是我要讲的,哈哈哈)具体代码实现单链原创 2020-05-20 21:59:42 · 296 阅读 · 0 评论 -
送你个树链剖分板子(洛谷P3384 【模板】轻重链剖分)
送你个树链剖分板子(洛谷P3384 【模板】轻重链剖分)题目链接码量还是差了点,昨天一个错误找了半天都没找到,这块终于算了个门吧#include<bits/stdc++.h>#define lowbit(x) x&(-x)#define ll long long#define inf 0x3f3f3f3fusing namespace std;const int...原创 2020-04-21 11:28:46 · 211 阅读 · 2 评论 -
hdu之Ice_cream's world(hdu 2120、2121、2122)
hdu之Ice_cream’s world(hdu 2120、2121、2122)一、Ice_cream’s world I hdu 2120Problem Descriptionice_cream’s world is a rich country, it has many fertile lands. Today, the queen of ice_cream wants awar...原创 2019-07-21 15:06:13 · 188 阅读 · 0 评论 -
线段树及例题(含题解)汇总(持续更新)
线段树及例题(含题解)汇总(持续更新)该来的总要来,寒假没好好学,现在就得为寒假的懒买单(呜呜呜)。看了一天的线段树,虽然看懂还是很容易,毕竟就是一个特殊二叉树,但是实际应用却还是很复杂的,于是开始找些模板题敲敲,争取好好掌握这一数据结构。至于不了解线段树基础知识的话,这有一大牛博客的传送门:传送门线段树使用于和区间统计有关的问题:比如某些数据可以按区间进行划分,按区间动态进行修改,而且还...原创 2019-08-03 17:19:24 · 2413 阅读 · 1 评论 -
POJ 1125:Stockbroker Grapevine(最短路径问题)
POJ 1125:Stockbroker Grapevine(最短路径问题)题目链接:POJ 1125DescriptionStockbrokers are known to overreact to rumours. You have been contracted to develop a method of spreading disinformation amongst the ...原创 2019-07-31 11:12:32 · 315 阅读 · 0 评论 -
hdu 2988:Dark roads(kruskal算法构建最小生成树应用)
hdu 2988:Dark roads(kruskal算法构建最小生成树应用)Problem DescriptionEconomic times these days are tough, even in Byteland. To reduce the operating costs, the government of Byteland has decided to optimize t...原创 2019-08-14 23:30:12 · 245 阅读 · 0 评论 -
带负权的单源最短路(Bellman-Ford&&SPFA)
带负权的单源最短路(Bellman-Ford&&SPFA)这次终于遇到带负权的单源最短路了,以前遇到的都是权值为正的情况,直接跑个Dijkstra算法即可这次也终于能好好学学Bellman-Ford算法和SPFA算法了(Bellman-Ford算法的优化(用队列))下面的博客,感觉很好,代码简单,而且用结构体和vector都有模板https://blog.csdn.net/...原创 2019-09-01 22:47:13 · 832 阅读 · 0 评论 -
POJ 1251:Jungle Roads(最小生成树)
POJ 1251:Jungle Roads(最小生成树)题目链接这道题一起那好像看到过一次,但是由于题目太长就没做,其实一看图就知道是个最小生成树题,昨天心血来潮做了下,结果很无语,一直RE。。。。。开始用的gechar来输入空格:getchar();scanf("%c",&ch);但是不知道POJ为啥就是不能过,后面改成这样scanf(" %c",&ch);结...原创 2019-10-11 14:14:21 · 160 阅读 · 0 评论 -
最小生成树概念及其构建(Prim算法、Kruskal算法)
最小生成树概念及其构建(Prim算法、Kruskal算法)基本概念:由生成树定义可知,无向连通图的生成树不是唯一 的,于是最小生成树的定义诞生,即:无向连通图是一个带权图,她的所有生成树中必有一棵边的权值总和最小的生成树(称为:最小代价生成树,即:最小生成树)综合来说:Prim算法时间复杂度(O(n^n))当顶点较少时选择;Kruskal算法时间复杂度(O(e*loge))主要耗费在边的排...原创 2019-07-17 20:23:45 · 4448 阅读 · 0 评论 -
二叉排序树的建立及遍历
二叉排序树的建立及遍历简单介绍:二叉排序树,顾名思义是一棵二叉树,但是其内部是有序的,遵循规则:根结点<左子树,根结点>右子树于是上例题:输入输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。输出可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个...原创 2019-07-20 11:35:29 · 1016 阅读 · 0 评论 -
栈应用之:表达式求值
栈应用之:表达式求值题目描述:算数四则运算的规则是1)先乘除,后加减;2)从左算到右;3)先括号内,后括号外。由此,算式4+23-10/5的计算顺序为4+23-10/5=4+6-10/5=4+6-2=8。给定一个以“#”作为结束符的算式,求出算式的结果。输入以“#”结尾的表达式,运算数为正整数。每个表达式占一行。输出输出表达式运算的结果。样例输入4+23-10/...原创 2019-05-27 15:07:43 · 1282 阅读 · 0 评论 -
稀疏矩阵的普通转置与快速转置
稀疏矩阵的普通转置与快速转置相关介绍稀疏矩阵即:由于矩阵大小较大,而大部分元素都是零,非零元素极少,于是稀疏矩阵采用三元组表存储三元组的表示:typedef struct{ int x; //非零元素行 int y; //非零元素列 int v; //非零元素本身的值}node; //即非零元素所对应的三元组typedef ...原创 2019-06-05 23:08:58 · 3872 阅读 · 0 评论 -
模式匹配之BF算法与KMP算法
模式匹配之BF算法与KMP算法完全只是想方便自己复习所用,如有错误还请指出以及不详细还望见谅,能力有限ps:关键是书上的字符串都是从一开始,本人喜欢从0开始,而且目前觉得代码不长,习惯一个函数写到底(当然这并不好),在当中还踩了很多坑一、简单模式匹配算法(BF算法)通俗一点,就是暴力搜索,当发现主串与模式串相对应字符不一样时,指针回溯,从主串下一个位置再开始逐一匹配,话不多说,看代码:...原创 2019-06-02 23:04:46 · 399 阅读 · 1 评论 -
无向图判环(DFS与并查集)
无向图判环(DFS与并查集)ps:一道本校院赛题,最后一小时应该开这道题的,导致到比赛结束这道题都看都没看XP的校园漫步题目描述众所周知,XP学长即将毕业了,所以他觉得在校园里来一次漫步,在学校中有N个标志性的建筑,XP学长并不喜欢走小路,因此他会随机的选择某条大路从某个建筑走到另一个建筑,XP学长当然想要走遍校园内的所有建筑,但他会随机的选择某一条路去漫步,当然XP学长走完某一条路,...原创 2019-06-18 12:52:07 · 2626 阅读 · 0 评论 -
简单迷宫(DFS、BFS)
简单迷宫(DFS、BFS)PS:不得不说自己太菜了,DFS和BFS的模板题都搞了好几个小时一、判断是否能走到问题(DFS)题目描述有一个 10 x 10 的迷宫,起点是‘S’,终点是‘E’,墙是‘#’,道路是空格。一个机器人从起点走到终点。当机器人走到一个通道块,前面已经没有路可走时,它会转向到当前面向的右手方向继续走。如果机器人能够过,则留下足迹‘*’,如果走不通,则留下标记‘!’。...原创 2019-05-20 16:40:46 · 969 阅读 · 0 评论 -
最短路径问题(Dijkstra算法、Floyd算法)
最短路径问题(Dijkstra算法、Floyd算法)将近一天的时间(其实中间大部分看手机去了)终于把最短路径这个经典问题算搞懂了吧一、Dijkstra算法简单介绍:Dijkstra算法(即迪杰斯特拉算法)时间复杂度(O(n^2))主要就是解决从单一源点到其他各点的最短路径问题;基本思路:设置两个顶点的集合:S和T(S+T=V)(也就是说S和T集合的元素个数的和为:总结点个数),集合...原创 2019-07-15 17:39:55 · 1576 阅读 · 0 评论 -
行逻辑链接的矩阵乘法(稀疏矩阵)
行逻辑链接的矩阵乘法(稀疏矩阵)针对稀疏矩阵的乘法,如果按照普通矩阵的乘法进行计算时,时间复杂度必定很大,于是为了尽量降低时间复杂度同时方便运算:可以设定一个累加器:temp[]数组,用来存放当前行中Cij的值,当前行所以元素全部算出之后,再存放到C.data中同时参考稀疏矩阵快速转置的思想:稀疏矩阵普通转置与快速转置的链接设置两个数组num[]与rpot[]快速矩阵转置利用两个数组:...原创 2019-07-11 19:57:33 · 2118 阅读 · 1 评论 -
走进AC自动机
走进AC自动机AC自动机,听这名字就很高大上的亚子,起初还以为就是AC自动机。。。。。。开始真正的走进AC自动机了简单介绍:AC自动机即为:多模匹配问题(像:经典的KMP算法就是单一模式匹配),于是要学会AC自动机,我们必须知道什么是Trie,也就是字典树。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常...原创 2019-07-16 19:45:21 · 272 阅读 · 0 评论 -
由遍历序列恢复二叉树
由遍历序列恢复二叉树PS:这里只介绍由先序序列和中序序列构造唯一二叉树举一个例子:由:先序序列为:ABCDEFGHI中序序列为:BCAEDGHFI恢复该二叉树首先,由先序序列可知,结点A是二叉树根结点。其次,根据中序序列,在A之前所有的结点都是根结点的左子树的结点,在A之后的结点都是根结点右子树的结点,由此就是下图的a) 的状态。然后在对A左子树进行分解,得知B是左子树的根结点...原创 2019-07-19 23:55:24 · 2854 阅读 · 0 评论 -
单链表基本操作整合
链表基本操作链表是数据结构中一种最基本的数据结构,它是用链式存储结构实现的线性表。它较顺序表而言在插入和删除时不必移动其后的元素。现在给你一些整数,然后会频繁地插入和删除其中的某些元素,会在其中某些时候让你查找某个元素或者输出当前链表中所有的元素。输入输入数据只有一组,第一行有n+1个整数,第一个整数是这行余下的整数数目n,后面是n个整数。这一行整数是用来初始化列表的,并且输入的顺序与列...原创 2019-05-08 23:49:46 · 274 阅读 · 0 评论