最近家庭聚会也真不少,为啥做题这么应景... 水题,加上集合的利用,并查集 ...
分类:
其他好文 时间:
2020-01-27 18:50:08
阅读次数:
68
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。 A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第 ...
分类:
其他好文 时间:
2020-01-27 17:14:20
阅读次数:
120
[APIO2012]派遣 枚举所有忍者在哪棵子树内, 答案即为本子树内最多派遣的忍者数乘上子树根在原树中祖先最强的领导力, dfs用可并堆合并两棵子树即可, 这道题用不着用并查集维护连通性 ...
因为放一个就需要判断一次,每一次跑一遍全图bfs显然是不现实的 又因为点只有三种,黑白无 所以可以用并查集优化 添加一个棋子就判断周围四个的组别情况 注意出现的情况与答案关系之间的判别 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 #i ...
分类:
其他好文 时间:
2020-01-27 00:14:53
阅读次数:
59
给定一个包含n个点(编号为1~n)的无向图,初始时图中没有边。 现在要进行m个操作,操作共有三种: “C a b”,在点a和点b之间连一条边,a和b可能相等; “Q1 a b”,询问点a和点b是否在同一个连通块中,a和b可能相等; “Q2 a”,询问点a所在连通块中点的数量; 输入格式 第一行输入整 ...
分类:
其他好文 时间:
2020-01-26 19:30:53
阅读次数:
83
一、概念 一个集合中的元素,仅有的关系就是同属于这个集合,并查集就是用来维护若干集合的一种数据结构。 并查集有两个基本操作: 1. 并:合并两集合; 2. 查:查询两个元素是否属于同一个集合。 为了方便地实现合并以及查找操作,我们在一个集合中规定唯一一个根结点,并将这个根结点作为该集合的标志。 开始 ...
分类:
其他好文 时间:
2020-01-26 19:27:24
阅读次数:
54
一共有n个数,编号是1~n,最开始每个数各自在一个集合中。 现在要进行m个操作,操作共有两种: “M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; “Q a b”,询问编号为a和b的两个数是否在同一个集合中; 输入格式 第一行输入整数n和m。 接下来 ...
分类:
其他好文 时间:
2020-01-26 17:36:52
阅读次数:
85
并查集 1.合并两个集合 2.查询两个数是否在一个集合 基本原理: 每个集合用一棵树来表示,树根的编号就是整个集合的编号,每个结点存储他的父节点,p[x]表示x的父节点 1.是否是一个集合 if( find(a)==find(b) ) 2.合并两个集合 p[find(a)]=find(b) stat ...
分类:
其他好文 时间:
2020-01-26 17:28:04
阅读次数:
84
[acwing 240] 食物链 [并查集] "传送门" 题意 ABC三种动物,食物链构成一个环形,,给出M个关于彼此关系的描述,判断有多少个假话。 1 X Y表示同类 2 X Y表示X吃Y 思路 本题是并查集的一种比较新颖的用法,并查集一般用来维护集合,但是在这里主要是使用路径压缩来维护点和根之间 ...
直接干 1 #include<iostream> 2 #include<algorithm> 3 #include<climits> 4 using namespace std; 5 struct edge 6 { 7 int from,to,weight; 8 }a[100010];//存边 9 ...
分类:
其他好文 时间:
2020-01-26 12:58:41
阅读次数:
56