首先提取题目信息,我们需要计算朋友的关系,以及计算不开心值。 其实看题目我们很容易就有并查集的感觉,之后我们要去验证这个算法是正确的 题目要求的是求不开心值,那么我们就可以想到使用并查集求集合总数就可以了 虽然朋友不存在传递性,但是这并不影响不开心值的大小,因为如果a和b是朋友,b和c是朋友 那么虽 ...
分类:
其他好文 时间:
2020-02-25 21:45:31
阅读次数:
105
本题从题目给出的条件我们发现了最小生成树的影子,也就是kruscal的影子 其实我们在写kruscal的时候就是利用并查集的思想来写的 这题需要注意的是,我们在求取的过程中l并不需要减少,我们只要最小生成树中的最大边权小于等于l就行了 这就让我们想到了可以从小到大对边权排序,之后枚举维护树集合,如果 ...
分类:
其他好文 时间:
2020-02-25 17:54:23
阅读次数:
69
分析: 本题最重要的是通过向量的想法来解决这一类关系,这样思维难度大大降低,首先我们明白一点 根据传递性的定义(也就是离散数学中的传递性),x->y =x->z+z>y 我们要知道的一点是,并查集中的题目都是有传递性的,而传递性的题目并不一定能通过并查集解决 我们知道我们要将两个不同的集合合并,就是 ...
分类:
其他好文 时间:
2020-02-25 12:33:11
阅读次数:
65
这道理重要的想法就是利用并查集缩点,将所有相等的点缩成同一个点 因为如果不缩点,那么如果两个数相等,其他的数与他们中任意一个数有关系,就需要把相等的数的关系也都连上,也就是加边。这样十分复杂 我们又可以发现,如果缩点,因为每个点本身有rp值,所以缩成的点能排序的话,原先也可以。就是基于这个原理证明的 ...
分类:
其他好文 时间:
2020-02-24 20:39:58
阅读次数:
68
二分搜索树 6-1 为什么要研究树结构 树结构 为什么要有树结构? 树结构本身是一种天然的组织结构 高效 将数据使用树结构存储后,出奇的高效。 二分搜索树(Binary Search Tree) 平衡二叉树:AVL;红黑树 堆;并查集 线段树;Trie(字典树,前缀树) 6-2 二分搜索树基础 和链 ...
分类:
其他好文 时间:
2020-02-23 20:26:55
阅读次数:
82
一、技术总结 1. 这是一道并查集的题目,这里无非就是明白题目的含义,然后将套路用上基本上问题不大。 2. 一个是father数组用于存储父亲结点,isRoot用于存储根结点,如果题目需要,还可以建立一个course数组,用于存储,例如这个题目就是用于判断该该兴趣是否有人涉及。 3. findFat ...
分类:
其他好文 时间:
2020-02-23 16:27:02
阅读次数:
68
PAT 甲级 Advanced 1034 Head of a Gang (30) [图的遍历,BFS,DFS,并查集] ...
分类:
其他好文 时间:
2020-02-23 11:43:41
阅读次数:
55
有一个 $n \times m$ 矩阵,初态下全是 $0$。 如果两个相邻元素(四连通)相等,我们就说它们是连通的,且这种关系可以传递。 有 $q$ 次操作,每次指定一个位置 $(x_i,y_i)$ 把它替换为 $c_i$。 每次操作后求这个矩阵有多少个连通块。 $q \leq 2\times 10 ...
分类:
其他好文 时间:
2020-02-23 11:33:53
阅读次数:
68
一、并查集的定义 1. 并查集是一种维护集合的数据结构,它的名字中“并”、“查”、“集”。分别取自Union(合并)、Find(查找)、Set(集合)。 合并:就是合并两个集合 查找:判断两个元素是否在一个集合 那么并查集是用什么实现的,就是一个数组, 对于同一个集合来说只存在一个根结点,且将其作为 ...
分类:
其他好文 时间:
2020-02-23 00:08:03
阅读次数:
94
import numpy as np import os class DIS_JOIN(object): def __init__(self): ''' 并查集算法 拥有两个函数 一个是把某个元素放在某个集合中 另一个是返回一个list,包含所有集合和集合中所有的点 ''' self.Set = N ...
分类:
编程语言 时间:
2020-02-22 15:28:19
阅读次数:
79