day1 AcWing 836. 合并集合
初始化:
n个下表对应n个集合,根节点的特征是父节点就是其本身。
for(int i = 1; i <= n; i++)
p[i] = i;
M操作:如果两个元素在同一个集合中,什么也不做,否则将两个集合合并;
Q操作:两个集合在同一个集合回复“Yes”,否则回复“No”;
核心思想:(1)两个集合合并,只需要将一个集合的根节点插入另一个集合,作为另一个集合的父节点即可;
(2)查询根节点判断祖先:使用路径压缩,对于一个集合中的元素x,在寻找根节点时,沿着根节点路径的所有节点都直接指向根节点。
find(int x){ //返回 x 的根节点
if(p[x] != x) //父节点不是根节点
p[x] = find(p[x]); //递归向上寻找,根节点直接指向祖先节点
return p[x];
}
M: if(find(a) != find(b)){ // a, b分别在不同的集合中
p[find(a)] = find(b); //b的根节点作为a的根节点的父节
}
Q: if(find(a) == find(b)) return Yes;
else return No;
day1 AcWing 836. 合并集合的更多相关文章
- AcWing 836. 合并集合
地址 https://www.acwing.com/problem/content/838/ 一共有n个数,编号是1~n,最开始每个数各自在一个集合中. 现在要进行m个操作,操作共有两种: “M a ...
- hdu4334 Trouble 合并集合可以降低复杂度阿啦啦
我觉得这一题方法很好的,但是之前完全没有碰到过,也没有想到,这么简单直接降低复杂度的方法 先将两个集合合并成1个集合,合并两个(s1,s2),即每个集合里n^2个数,还剩一个n个数的集合 这样还剩超时 ...
- JAVA List合并集合
import java.util.ArrayList; import java.util.List; public class test { public static void main(Strin ...
- solr合并集合
当需要合并两个不同项目或者是多个分开配置的服务器时,你既可以使用lucene-misc里面的IndexMergeTool工具,也可以使用CoreAdminHandler. 要合并索引,必须满足如下要求 ...
- day1 java基础回顾-集合
1.集合 1.1 集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快, 增删慢 由于是数组实现 ...
- AcWing 148. 合并果子
#include <iostream> #include <algorithm> #include <queue> using namespace std; int ...
- [AcWing 36] 合并两个排序的链表
点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L ...
- 最完整的合并相交集合的Java代码(查并集)
这个是自己写的算法,如果有大牛,麻烦帮我并行化.初学者则可以学到不少东西. 产生测试用例 import java.io.*; import java.util.Random; public class ...
- c++ 集合的增删改查,与两集合的合并 缺陷(空间大小不灵活)
#if 1 #include <iostream> #include <stdlib.h> using namespace std; class List { public: ...
- 如何将List集合中相同属性的对象合并
在实际的业务处理中,我们经常会碰到需要合并同一个集合内相同属性对象的情况,比如,同一个用户短时间内下的订单,我们需要将各个订单的金额合并成一个总金额.那么用lambda表达式和HashMap怎么分别处 ...
随机推荐
- 亲测有效 Hyper V3.4.0 终端美化工具 支持win/mac
亲测有效 Hyper V3.4.0 终端美化工具 支持win/mac Hyper 是一款终端美化工具 基于Web技术,JS/HTML/CSS ,支持扩展增强,很不错! 且支持win,mac 下载地址 ...
- 2.5.scrollView和swiper组件的使用
# scroll-view 可滚动视图区域.用于区域滚动. 需注意在webview渲染的页面中,区域滚动的性能不及页面滚动. 属性说明 属性名 类型 默认值 说明 平台差异说明 scroll-x Bo ...
- SQLSERVER 临时表和表变量到底有什么区别?
一:背景 1. 讲故事 今天和大家聊一套面试中经常被问到的高频题,对,就是 临时表 和 表变量 这俩玩意,如果有朋友在面试中回答的不好,可以尝试看下这篇能不能帮你成功迈过. 二:到底有什么区别 1. ...
- 调用HttpClient.PostAsync时传token等值
做内部接口转发时加token验证需要传token值过去,有如下两种方式 string jsonContent = JsonConvert.SerializeObject(args); using(va ...
- 自抗扰(ADRC)控制原理及控制器设计
https://blog.csdn.net/weixin_43487974/article/details/127163824?spm=1001.2101.3001.6650.2&utm_me ...
- day13-自定义拦截器
自定义拦截器 1.什么是拦截器 说明: 拦截器与过滤器的区别 SpringMVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求 ...
- Windows环境下FTP Server在局域网内的搭建
什么是FTP? File transfer protocol sreveris a computer software that facilitate the secure rxchange of f ...
- Spring Boot学习笔记(一)----概要与入门
本文来自博客园,作者:{张果},转载请注明原文链接:{SpringBoot学习笔记(一)--SpringBoot概要与快速入门} 一.Spring Boot概要 没有Spring Boot开发项目时各 ...
- php pdo如何查询记录条数
转载php中文网:https://www.php.cn/php-ask-457710.html php pdo查询记录条数的方法:1.使用fetchAll函数查询,其语法如"$rows=$q ...
- sqlserver生成指定的序列
WITH numbers AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM numbers WHERE num < 30 ) SELECT C ...