并查集
并查集:孩子结点指向父亲结点的逻辑结构
wdt_
即使上线也匆忙,新版本,愁断肠,orz...
展开
-
【并查集】A021_LQ_网络分析(建树+树形dp)
小明正在做一个网络实验。他设置了 n 台电脑,称为节点,用于收发和存储数据。初始时,所有节点都是独立的,不存在任何连接。小明可以通过网线将两个节点连接起来,连接后两个节点就可以互相通信了。两个节点如果存在网线连接,称为相邻。小明有时会测试当时的网络,他会在某个节点发送一条信息,信息会发送到每个相邻的节点,之后这些节点又会转发到自己相邻的节点,直到所有直接或间接相邻的节点都收到了信息。所有发送和接收的节点都会将信息存储下来。一条信息只存储一次。给出小明连接和测试的过程,请计算出每个节点存储信息的大原创 2020-08-30 16:45:19 · 277 阅读 · 0 评论 -
【并查集】B020_LQ_修改数组(跳跃检查 / uf)
给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数。现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改 A2,A3,··· ,AN。当修改 Ai 时,小明会检查 Ai 是否在 A1 ∼ Ai−1 中出现过。如果出现过,则 小明会给 Ai 加上 1 ;如果新的 Ai 仍在之前出现过,小明会持续给 Ai 加 1 ,直 到 Ai 没有在 A1 ∼ Ai−1 中出现过。当 AN 也经过上述修改之后,显然 A 数组中就没有重复的整数了。 现在原创 2020-08-26 11:54:56 · 238 阅读 · 0 评论 -
【并查集】C019_LQ_合根植物(二维转一维)
w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)接下来k行,第行两个整数a,b,表示编号为a的原创 2020-08-24 08:19:05 · 139 阅读 · 0 评论 -
【并查集】B018_LC_账户合并(邮箱到连通块的映射)
一、Problem给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该帐户的邮箱地址。现在,我们想合并这些帐户。如果两个帐户都有一些共同的邮件地址,则两个帐户必定属于同一个人。请注意,即使两个帐户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的帐户,但其所有帐户都具有相同的名称。合并帐户后,按以下格式返回帐户:每个帐户的第原创 2020-08-03 21:50:46 · 174 阅读 · 0 评论 -
【并查集】B017_LC_婴儿名字(非常难搞)
一、Problem每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来。给定两个列表,一个是名字及对应的频率,另一个是本质相同的名字对。设计一个算法打印出每个真实名字的实际频率。注意,如果 John 和 Jon 是相同的,并且 Jon 和 Johnny 相同,则 John 与 Johnny 也相同,即它们有传递和对称性。在结果列表中,选择字典序最小的名字作为真实名字。输入:nam原创 2020-08-03 17:10:45 · 120 阅读 · 0 评论 -
【并查集】A016_LC_情侣牵手(检查相邻位置 / uf)
一、ProblemN 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人,让他们站起来交换座位。人和座位用 0 到 2N-1 的整数表示,情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2N-2, 2N-1)。这些情侣的初始座位 row[i] 是由最初始坐在第 i 个座位上的人决定的。示例 1:输入: row = [0, 2, 1, 3]输出: 1解释: 我们只需要原创 2020-08-02 16:50:16 · 154 阅读 · 0 评论 -
【并查集】A015_LC_相似字符串组(扩展网格 + 连通块数量)
一、Problem如果我们交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,“tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相似的,但是 “star” 不与 “tars”,“rats”,或 “arts” 相似。总之,它们通过相似性形成了两个关联组:{“tars”, “rats”, “arts”} 和 {“star”}。注意,“tars”原创 2020-07-23 10:49:23 · 188 阅读 · 0 评论 -
【并查集】B014_LC_由斜杠划分区域(扩展网格 + 连通块数量)
一、Problem在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此 \ 用 “\” 表示。)。返回区域的数目。输入:[ " /", " "]输出:1解释:2x2 网格如下:提示:1 <= grid.length == grid[0].length <= 30grid[i][j] 是 ‘/’、’’、或 ’ '。二、Solution方原创 2020-07-13 11:20:15 · 247 阅读 · 0 评论 -
【并查集】A013_LC_按公因数计算最大组件大小(试除法求约数 / 质数打表)
一、Problem给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记;只有当 A[i] 和 A[j] 共用一个大于 1 的公因数时,A[i] 和 A[j] 之间才有一条边。返回图中最大连通组件的大小。示例 1:输入:[4,6,15,35]输出:4提示:1 <= A.length <= 200001 <= A[i] <= 100000二、Solution方法一:并查集原创 2020-07-11 18:21:31 · 322 阅读 · 0 评论 -
【并查集】B012_LC_移除最多的同行或同列石头(贪心)
一、Problem我们将石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。每次 move 操作都会移除一块所在行或者列上有其他石头存在的石头。请你设计一个算法,计算最多能执行多少次 move 操作?示例 1:输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]输出:5示例 2:输入:stones = [[0,0],[0,2],[1,1],[2,0],[2,2]]输出:3示例 3:输入:stones = [[0,0]原创 2020-07-11 12:13:08 · 204 阅读 · 0 评论 -
【并查集】B011_LC_交换字符串中的元素(Map + PQ)
一、ProblemYou are given a string s, and an array of pairs of indices in the string pairs where pairs[i] = [a, b] indicates 2 indices(0-indexed) of the string.You can swap the characters at any pair of indices in the given pairs any number of times.Return原创 2020-06-16 09:48:39 · 274 阅读 · 0 评论 -
【并查集】B010_LC_连通网络的操作次数(统计多余的网线)
一、ProblemThere are n computers numbered from 0 to n-1 connected by ethernet cables connections forming a network where connections[i] = [a, b] represents a connection between computers a and b. Any computer can reach any other computer directly or indirec原创 2020-06-10 15:50:43 · 163 阅读 · 0 评论 -
【并查集】B008_LC_等式方程的可满足性(互斥)
一、ProblemGiven an array equations of strings that represent relationships between variables, each string equations[i] has length 4 and takes one of two different forms: “a==b” or “a!=b”. Here, a and b are lowercase letters (not necessarily different) tha原创 2020-06-08 23:23:21 · 200 阅读 · 1 评论 -
【并查集】A007_LC_最长连续序列(记忆化搜索 / 并查集 (代办))
一、ProblemGiven an unsorted array of integers, find the length of the longest consecutive elements sequence.Your algorithm should run in O(n) complexity.Input: [100, 4, 200, 1, 3, 2]Output: 4Explanation: The longest consecutive elements sequence is [1,原创 2020-06-07 16:38:10 · 285 阅读 · 0 评论 -
【并查集】B006_人人都是好朋友(rank UF / 离散化)
一、Problem231 2 11 3 12 3 131 2 11 3 12 3 0YESNO二、Solution方法一:纯并查集C++ 做离散化比较好做,Java 需要自己手写 unique,lower_bound 等方法,实属难受。import java.util.*;import java.math.*;import java.io.*;public class Main{ static class Solution { class UF {原创 2020-05-09 20:13:20 · 193 阅读 · 0 评论 -
【图论】C_hdu_1213 How Many Tables(dfs / uf)
一、ProblemToday is Ignatius’ birthday. He invites a lot of friends. Now it’s dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know eac...原创 2020-04-30 11:02:40 · 169 阅读 · 0 评论 -
【回溯】B045_LQ_发现环(拓扑排序 / dfs + 并查集)
一、Problem小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑...原创 2020-04-26 20:37:14 · 125 阅读 · 0 评论 -
【并查集】B005_LC_冗余连接(并查集 / 拓扑排序)
一、题目描述在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。返回一条可以删去的边,使得结果图是一个有...原创 2020-04-17 17:18:42 · 241 阅读 · 1 评论 -
【并查集】B004_LC_统计参与通信的服务器(枚举 / 并查集)
一、题目描述You are given a map of a server center, represented as a m * n integer matrix grid, where 1 means that on that cell there is a server and 0 means that it is no server. Two servers are said to c...原创 2020-04-17 11:44:59 · 236 阅读 · 0 评论 -
【并查集】B002_被环绕的区域(并查集 | DFS | BFS)
一、题目描述Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'.A region is captured by flipping all 'O's into 'X's in that surrounded region.Example:X X X X...原创 2020-01-21 11:46:27 · 323 阅读 · 0 评论 -
【并查集】B001_岛屿数量(并查集)
一、题目描述Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You m...原创 2020-01-20 23:11:46 · 747 阅读 · 0 评论 -
【并查集】B000_朋友圈(并查集 | DFS | BFS)
一、题目描述Given a N*N matrix M representing the friend relationship between students in the class. If M[i][j] = 1, then the ith and jth students are direct friends with each other, otherwise not. And y...原创 2020-01-20 21:07:49 · 251 阅读 · 0 评论 -
【并查集】U000_并查集初探
一、并查集要解决的问题给出两个节点,判断它们是否连通;如果连通,不需要给出具体的路径二、应用场景网络连接判断:如果每个 pairpairpair 中的两个整数分别代表一个网络节点(坐标),那么该 pairpairpair 就是用来表示这两个节点是需要连通的。那么为所有的 pairspairspairs 建立了动态连通图后,就能够尽可能少的减少布线的需要,因为已经连通的两个节点会被直接忽略...原创 2020-01-20 17:49:21 · 360 阅读 · 0 评论