
数据结构
文章平均质量分 69
本专栏涵盖数据结构相关内容,包括数组、树、图、表、堆栈等
阿阿阿安
阿安,浙江大学计算机硕士,目前大厂在职,这里总有你想知道的,关注我带你不断打怪升级!合作请私信,其他平台同步更新
@知识星球APP(优质好文):阿安的万事屋(星球号 55264581),
@小红书APP(求职攻略):阿阿阿安(小红书号 6309504950)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【刷题记录】 PTA 社交集群 并查集
当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友。一个“社交集群”是指部分兴趣爱好相同的人的集合。你需要找出所有的社交集群。原创 2020-04-08 20:45:51 · 1249 阅读 · 0 评论 -
【刷题记录】 Gym-101982E Cops And Robbers 网络流最小割
输入一个n行m列的地图,地图上有k种陷阱底座,每种陷阱必须放在相应底座上,并且有一定的花费。有一只兔子初始位置在'B'处,为了使这只兔子不能逃出地图,必须放置一些陷阱来阻拦它。问怎么样放置陷阱花费最小并且使得兔子逃不出去。若拦不住,则输出-1。原创 2019-04-30 19:48:39 · 393 阅读 · 0 评论 -
【刷题记录】 HDU-6521 Party 吉司机线段树
有n个人,m个聚会。每场聚会邀请编号l--r的人来聚会,每场聚会的人都会互相认识对方。问每场新互相认识的人有多少对。原创 2019-04-30 19:31:38 · 291 阅读 · 0 评论 -
【刷题记录】 LightOJ-1356 Prime Independence 数论+最大独立集
给出n个数字的集合,让你求一个子集,使得自己内任意两个数之间不是素数倍数关系,求这样的最大的子集大小。原创 2019-04-26 17:29:34 · 532 阅读 · 0 评论 -
【图论】 二分图最大匹配与最大独立集
现在有了二分图,假如两部分ab之间的边表示A部分的a可以和B部分的b进行配对,并且每个人只能匹配一个人,那么怎么能在不产生冲突的条件下,匹配最多的对数呢?原创 2019-04-26 11:58:28 · 2359 阅读 · 1 评论 -
【刷题记录】 CodeForces-1095F Make It Connected 最小生成树
给出每个点权值,建立每条边代价为ai+bi(a,b为两段点),再给出m条现成的路以及代价,求在这些基础上建立起来的最小连通图的代价。原创 2019-04-07 21:59:32 · 281 阅读 · 0 评论 -
【刷题记录】 HDU 1394 Minimum Inversion Number 树状数组+贪心
给你一个长为n的序列(0~n-1的排列),每一步把序列首的数字移动到序列尾,一共执行n-1次,问在此过程中,最小的逆序对数是多少。原创 2019-03-20 20:38:11 · 194 阅读 · 0 评论 -
【数据结构】 树状数组及其应用
树状数组的含义是将数组表示为稀疏树形结构,是一种能在 O(logn) 时间内对数组进行更新和区间维护的数据结构。其本质就是利用二进制的特性将前缀和数组维护在树上的一种数据结构,类似于线段树。树状数组与线段树功能和作用类似,在复杂度上也同级。复杂性:树状数组在时间复杂度上的常数明显优于线段树,并且更加简洁和轻量化,代码效率高。功能性:树状数组的功能比较局限,只能处理简单的具有前缀和累计特性的区间维护、修改问题。原创 2019-03-20 19:45:04 · 1545 阅读 · 1 评论 -
【刷题记录】 PTA红色警报 并查集+逆向建图判断连通
给你一个无向图,给出k个删除点,问删除每一个点以后,图是否会分裂为更多的部分,每删除一个点输出信息。原创 2019-03-15 21:15:32 · 576 阅读 · 0 评论 -
【刷题记录】 天梯赛L2-004 二叉搜索树
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,(1)其左子树中所有结点的键值小于该结点的键值;(2)其右子树中所有结点的键值大于等于该结点的键值;(3)其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。原创 2019-03-14 17:24:10 · 473 阅读 · 0 评论 -
【数据结构】 单调栈和单调队列
单调栈与单调队列相关。原创 2019-03-08 16:46:00 · 517 阅读 · 1 评论 -
【刷题记录】 POJ1679 The Unique MST 次小生成树
给你一个有权值的无向图,判断图中最小生成树是否唯一;若唯一则输出最小生成树的权值和,否则输出‘Not Unique!’原创 2019-03-06 16:57:03 · 258 阅读 · 0 评论 -
网络流(三) 最小边割与最小点割
网络流除了可以求图中的最大流,最小费用流,二分图完美匹配之外,还可以来求图的最小点割/边割集,再加上拆点法和建立源点汇点的使用,使得网络流可以灵活解决其他的建模问题。原创 2019-02-16 11:11:24 · 5390 阅读 · 0 评论 -
【刷题记录】 PTA 关键活动(30分)
求最短时间和所有的关键活动,注意多起点多终点。原创 2018-11-17 19:38:51 · 1515 阅读 · 0 评论 -
【图论】 拓扑排序与关键路径
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。原创 2018-11-17 17:53:53 · 2812 阅读 · 2 评论 -
【刷题记录】 POJ-3463 Sightseeing 次短路和最短路
告诉你那n个点以及m条单向边。询问你从s点到e点最短路和比最短路长度大一的路一共有多少条。原创 2018-11-09 20:40:15 · 264 阅读 · 0 评论 -
K-D Tree 维度空间搜索二叉树
K-D树全称为K -Dimension Tree ,其实质是一棵二叉树。大家可能知道二叉搜索树,二叉搜索树是在一维数据里面建立的搜索树,用于更快的查找。这里的K - D树可以看作是推广到多维空间里面时对于点查找的搜索树。但是你可能有疑问,为什么不用二叉搜索树来进行多维里面的查找?因为点是不能直接比较大小的,所以这里的二叉搜索树必须另外建立一种建树规则,就形成了一种特殊的二叉搜索树即K - D 树。原创 2018-11-07 21:43:43 · 2351 阅读 · 0 评论 -
【刷题记录】 Zoning Houses Kattis 多组记录线段树/ST表
给你n个平面上的点,再给你m个询问,每个询问包括[ l, r ]内的点,让你求出包含这些点在内的最小正方形的边长,你可以忽略这些点内的一个点。原创 2018-11-01 17:49:37 · 185 阅读 · 0 评论 -
【刷题记录】 HDU 3572 Task Schedule 网络流
工厂里有n个任务,每个任务都有最早开始时间si,完成所需时间pi,最晚结束时间ei;现在工厂里有m台机器,每台机器每次只能执行一个任务,每个任务可以在执行过程中中断然后放到另一台机器上执行。问这些任务能否在期限内完成。原创 2018-10-22 11:10:49 · 305 阅读 · 0 评论 -
【图论】 超级源点与超级汇点
我们平时所做的算法多是适用于一个源点到一个汇点或者是一个源点到多个汇点的类型,但是如果出现多个源点对应多个汇点时,我们会不知所措。如果跑多遍算法容易TLE超时,换个思维来想,既然是从多个源点出发到多个汇点,我们能不能建立一个点来代替多个源点/汇点 的效果,而又不影响答案,这就是虚拟点。原创 2018-10-16 17:16:04 · 5002 阅读 · 4 评论 -
【刷题记录】 HDU 5988 Coding Contest 费用流+超级源点/汇点
这里被划分为了n块区域,每个区域都有人si和食物bi,但是有的地方人多于食物,有的地方人少于食物。为了让所有的人都吃上饭,有的人要去别的地方。区域之间由m条线路连接,每条路有通过人数的最大容量ci。并且除了第一个走这个线路的人,其他走这里的人都有pi的几率碰断线路。现在问你,在保证所有人都能吃上饭的情况下,整个线路网络崩坏的最小可能性。原创 2018-10-13 19:21:46 · 174 阅读 · 0 评论 -
网络流(二) 最小费用最大流问题
上篇我们讲解了最大流问题,那什么是最小费用最大流呢?听名字就可以看出,我们要在满足最大流的同时找到达成最大流的最小费用。对于一个网络流,最大流是一定的,但是组成最大流的费用是可以不同的,这里就有了在最大流网络上产生的费用流网络,就有了最小花费问题。原创 2018-10-13 19:19:53 · 7868 阅读 · 0 评论 -
网络流(一) 最大流问题
在一个有向图上选择一个源点,一个汇点,每一条边上都有一个流量上限(以下称为容量),即经过这条边的流量不能超过这个上界,同时,除源点和汇点外,所有点的入流和出流都相等,而源点只有流出的流,汇点只有汇入的流。这样的图叫做网络流。原创 2018-10-12 20:20:56 · 4901 阅读 · 1 评论 -
【刷题记录】 NAIPC 2016 Tourist LCA+暴力
求出树上x和所有x的倍数之间的距离和。原创 2018-10-07 20:36:13 · 239 阅读 · 0 评论 -
【数据结构】 最近公共祖先 LCA
在一棵树上,两个节点之间公共的深度最大的祖先节点称为最近公共祖先。原创 2018-10-07 20:23:34 · 408 阅读 · 1 评论 -
【刷题记录】 HDU-6005 Pandaland Dijkstra+剪枝
给你n条边,让你在这些边中找到一个权值最小的环。原创 2018-10-03 10:33:23 · 191 阅读 · 1 评论 -
【数据结构】 静态主席树
主席树也称函数式线段树或可持久化线段树。就是基于线段树的基础上,保存线段树的每个历史版本;线段树只能查询最终区间的结果,而不能查询过程中的信息,比如我们对区间进行了100次修改,问你第50次修改完时的区间和是多少?所以我们就有了主席树来实现保存线段树的每个历史版本,但注意主席树并不只是用于查询区间第k大,这只是查询历史线段树的一个用处而已!那么什么是静态主席树,就是我们这里只涉及对历史版本的查询,而不涉及对历史版本的修改(动态主席树)。原创 2018-09-23 20:59:59 · 338 阅读 · 1 评论 -
【刷题记录】 ACM-ICPC 2018 沈阳赛区网络预赛I Lattice‘s basics in digital electronics 字典树+模拟
给出一串16进制的字符串,把他转化为二进制。然后给你一些二进制串 si 对应的字符ASCII码 ci (每个si串前缀不同),然后给你对于转化为二进制后的字符串的算法规则,八个字符为一个部分,第九个字符时有两种情况。原创 2018-09-09 19:58:46 · 236 阅读 · 2 评论 -
【刷题记录】 ACM-ICPC 2018 沈阳赛区网络预赛 Made In Heaven 第K短路
输入一个有向图,求第k短路。原创 2018-09-08 19:48:44 · 280 阅读 · 2 评论 -
【图论】 第K短路和次短路
第K短路问题是最短路问题的特殊情况,其中第一短路就是最短路,并以此类推;求某源点s到某终点e的第K短路就是K短路问题。次短路即第2短路,相比第K短路问题更加特殊,当然也可以直接通过第K短路求解方法来解决;但除此之外,次短路问题还有更加灵活的解决方法。原创 2018-09-08 16:25:19 · 8619 阅读 · 8 评论 -
【刷题记录】 CODEVS 1391 伊吹萃香 多层图最短路
在幻想乡,伊吹萃香是能够控制物体密度的鬼王。因为能够控制密度,所以萃香能够制造白洞和黑洞,并可以随时改变它们。某一天萃香闲着无聊,在妖怪之山上设置了一些白洞或黑洞,由于引力的影响,给妖怪们带来了很大的麻烦。于是他们决定找出一条消耗体力最少的路,来方便进出。已知妖怪之山上有N个路口(编号1..N),每个路口都被萃香设置了一定质量白洞或者黑洞。原本在各个路口之间有M条单向路,走过每一条路需要消耗一定量的体力以及1个单位的时间。由于白洞和黑洞的存在,走过每条路需要消耗的体力也就产生了变化,假设一条道路两端路口黑白原创 2018-09-07 10:50:49 · 313 阅读 · 0 评论 -
【刷题记录】 ACM-ICPC 2018 南京赛区网络预赛L Magical Girl Haze 分层图最短路
给出n个 城市,m条路的有向图,每条路有路费,但是可以选择k条路免费通过,问从城市1到达城市n的最低花费。原创 2018-09-04 09:12:16 · 290 阅读 · 0 评论 -
【刷题记录】 HDU-5883 The Best Path 欧拉通路/回路
给你n个点和m条路的无向图 , 给你n个顶点的值 , 问你能否经过所有的边仅一次 , 若不能输出Impossible , 若能输出经过所有顶点异或的最大值。其实就是求欧拉通路/回路。原创 2018-08-25 10:51:49 · 285 阅读 · 0 评论 -
【数据结构】 链式前向星
图的存储方式主要有链接矩阵、邻接表两种,邻接矩阵的好处是写建图简单方便但占内存较大,节点数量稍微大点的题目就开不下数组了(适合稠密图);而邻接表虽然节省空间,但其指针形式难写易错,且vector形式的读取太慢易导致大数据下的TLE。针对上述问题,这里就产生了一种比较中庸的方式:链式前向星。简单来说,链式前向星就是把数据以链表形式连接在一起,那么连接的条件是什么呢?我们回想一下图里面邻接表里存的是每个点的连接点。那么这里的链式前向星存的就是以每个点为起点的所有边。原创 2018-08-14 20:10:43 · 2476 阅读 · 1 评论 -
【数据结构】 线段树详解
本文是个人通过部分博文学习线段树的笔记,并且写一下自己的理解,在文首标明了出处。线段树是把前缀和建在树上,前缀的是子节点的和,修改时只修改与修改点有联系的父节点,这就是线段树在该题的思路,也是线段树产生的背景。原创 2018-08-10 10:55:20 · 1314 阅读 · 1 评论 -
【刷题记录】 Codeforces Round #181 (Div. 2) Coach
题意:教练要训练n个队员 , 要把这些队员分组为三人一组 ,题目保证n一定是三的倍数 , 但是有些队员 i 要求跟队员 j 一队,i和j就必须一队。有m条队员要求 , 要求输出可能的一组分队情况。 如果不可能则输出-1 。 3原创 2018-07-25 19:24:58 · 228 阅读 · 0 评论 -
【数据结构】 带权并查集
带权并查集是指在并查集的基础上,对其中的每一个元素赋有某些值。在对并查集进行路径压缩和合并操作时,这些权值具有一定属性,即可将他们与父节点的关系,变化为与所在树的根结点关系。简而言之,带权值的并查集只不过是在并查集中加入了一个value数组,value数组可以记录很多种东西,不一定是类似距离这种东西,也可以是相对于根节点的状态。原创 2018-04-19 20:46:44 · 1642 阅读 · 1 评论 -
【图论】 最短路问题
最短路问题(short-path problem)是图论理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局等实际问题。基本内容是:若图结构中的每条边都有一个数值(长度、成本、时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路问题。原创 2018-03-24 11:15:42 · 392 阅读 · 1 评论 -
【数据结构】 并查集和最小生成树
并查集(Union-Find)是一种用来判断一个集合中相互关联的元素属于几个集合,也可以用来判断图结构中的两点是否是连通, 它也是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。简而言之,并查集就是合并集合或者在集合里查找元素的算法,可求连通子图、求最小生成树等。原创 2018-03-23 15:53:10 · 3785 阅读 · 1 评论 -
【图论】 图论基础
图是一种由“顶点”组成的抽象网络,网络中的各顶点可以通过“边”实现彼此的连接,表示两顶点有关联。最基本的图通常被定义为“无向图”,与之对应的则被称为“有向图”,两者唯一的区别在于有向图中的边是有方向性的。总的来说,图(Graph)G由两个集合顶点V(Vertex)和边E(Edge)组成,记作G=(V,E)。原创 2018-03-05 17:11:07 · 1883 阅读 · 2 评论