随笔分类 -  数据结构 - 并查集

摘要:看到这道题时没有什么思路,只会打暴力,而且数据范围比较有迷惑性,那基本就是分块了. 现在有两个暴力: 1.每次 $O(1)$ 更新边权,然后 $O(m)$ 暴力查询一个点的答案.2.每次将所有边排序,然后 $O(1)/O(\log n)$ 查询点权 上述两种做法中查询与更新的时间复杂度很不平衡,所以 阅读全文
posted @ 2020-08-12 20:30 EM-LGH 阅读(153) 评论(0) 推荐(0)
摘要:这种图论问题都挺考验小思维的. 首先,我们把从 $x$ 连出去两条边的都合并了. 然后再去合并从 $x$ 连出去一条原有边与一条新边的情况. 第一种情况直接枚举就行,第二种情况来一个多源 bfs 即可. code: #include <cstdio> #include <string> #inclu 阅读全文
posted @ 2020-02-28 17:23 EM-LGH 阅读(285) 评论(0) 推荐(0)
摘要:这个思路挺巧妙的 ~ 定义一行/列的权值为操作后所整体增加的值. 那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件. 但是呢,我们发现符号是不能限制我们的(因为可加可减) 所以可以将限制条件转化为 $a[x]-b[y]=c$. 这个用带权并查集就可以方便地维护了~ code: #incl 阅读全文
posted @ 2019-12-17 14:56 EM-LGH 阅读(196) 评论(0) 推荐(0)
摘要:如果一个连通块是一个树的形态,则不合法,否则合法. 用并查集判断一下即可. 阅读全文
posted @ 2019-09-28 14:18 EM-LGH 阅读(127) 评论(0) 推荐(0)
摘要:挺好想的,最简单的方法是并查集启发式合并,加暴力跳父亲。 然而,这个代码量比较小,比较好写,所以我写了 LCT,更具挑战性。 阅读全文
posted @ 2019-08-29 20:54 EM-LGH 阅读(201) 评论(0) 推荐(0)
摘要:Description 比特哈顿镇有n*n个格点,形成了一个网格图。一开始整张图是完整的。有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通。 比特哈顿镇有n*n个格点,形成了一个网格图。一开始整张图是完整的。有k次操作,每次会删掉图中的一条边(u,v),你需 阅读全文
posted @ 2019-07-31 16:09 EM-LGH 阅读(224) 评论(0) 推荐(0)
摘要:动态询问连通图任意两点间最短路,单次询问. 显然,肯定有一些巧妙地性质(不然你就发明了新的最短路算法了233)有一点很奇怪:边数最多只比点数多 $20$ 个,那么就可以将这个图看作是一个生成树,上面连了不到 $20$ 条边. 考虑两个点之间地最短路只有两种情况:经过所有只在生成树上的点,或者经过一些 阅读全文
posted @ 2019-07-29 16:24 EM-LGH 阅读(165) 评论(0) 推荐(0)
摘要:Description 给定一棵树,边的颜色为黑或白,初始时全部为白色。维护两个操作: 1.查询u到根路径上的第一条黑色边的标号。 2.将u到v 路径上的所有边的颜色设为黑色。 Notice:这棵树的根节点为1 给定一棵树,边的颜色为黑或白,初始时全部为白色。维护两个操作: 1.查询u到根路径上的第 阅读全文
posted @ 2019-07-24 09:14 EM-LGH 阅读(254) 评论(0) 推荐(0)
摘要:Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件 阅读全文
posted @ 2019-06-17 17:17 EM-LGH 阅读(192) 评论(0) 推荐(0)
摘要:Description 某校开展了同学们喜闻乐见的阳光长跑活动。为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动。一时间操场上熙熙攘攘,摩肩接踵,盛况空前。 为了让同学们更好地监督自己,学校推行了刷卡机制。 学校中有n个地点,用1到n的整数表示, 阅读全文
posted @ 2019-06-11 19:05 EM-LGH 阅读(243) 评论(0) 推荐(0)
摘要:考场上自己yy出来的做法..... Code: 阅读全文
posted @ 2018-11-06 13:15 EM-LGH 阅读(188) 评论(0) 推荐(0)
摘要:我们可以将横坐标和纵坐标看成是点。发现这些点之间是有传递性的。题中说明,如果有矩阵中三个顶点被选,则底角的点也会被覆盖,发现这些点之间是有传递性的。那么我们最终达到的目的就是使整个图中只有 111 个集合。而将两个集合合并的代价是新覆盖一个点。于是我们只需统... 阅读全文
posted @ 2018-10-14 10:27 EM-LGH 阅读(157) 评论(0) 推荐(0)
摘要:两个空洞可互达当且仅当两个空洞相切,即球心距离小于等于球的直径。 一一枚举两个可互达的空洞,并用并查集连起来即可。 Code:#include#includeusing namespace std;const int maxn = 1000 + 4;int ... 阅读全文
posted @ 2018-08-31 00:44 EM-LGH 阅读(135) 评论(0) 推荐(0)