并查集加训

1.模板

在这里插入图片描述

#include<iostream>
using namespace std;
const int N = 1e4 + 10;
int p[N];
int n, m;

int fd(int x){
	if(x != p[x]){
		p[x] = fd(p[x]);
	}
	return p[x];
}

int main(){
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; i++){
		p[i] = i;
	}
	int z, x, y;
	while(m--){
		scanf("%d%d%d", &z, &x, &y);
		int xx = fd(x), yy = fd(y);
		if(z == 1){
			if(xx != yy){
				p[yy] = xx;
			} 
		}else{
			if(xx == yy){
				cout<<"Y"<<endl;
			}else{
				cout<<"N"<<endl;
			}
		}
	}
	return 0;
}

2.亲戚(模板)

#include<iostream>
using namespace std;
const int N = 1e4 + 10;
int p[N];
int n, m, t;

int fd(int x){
	if(x != p[x]){
		p[x] = fd(p[x]);
	}
	return p[x];
}

int main(){
	cin>>n>>m>>t;
	for(int i = 1; i <= n; i++){
		p[i] = i;
	}
	int x, y;
	while(m--){
		cin>>x>>y;
		int xx = fd(x), yy = fd(y);
		if(xx != yy){
			p[yy] = xx;
		}
	}
	while(t--){
		cin>>x>>y;
		int xx = fd(x), yy = fd(y);
		if(xx != yy){
			cout<<"No"<<endl;	
		}else{
			cout<<"Yes"<<endl;
		}
	}
	return 0;
}

3.奶酪(维护连通球距离)

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e3 + 10;
int p[N], a[N], b[N];
long long x[N], y[N], z[N];
int n, h;
long long r;

long long dis(int i, int j){
	long long sum = 0;
	sum = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]) + (z[i] - z[j]) * (z[i] - z[j]);
	return sum;
}

int fd(int xx){
	if(xx != p[xx]){
		p[xx] = fd(p[xx]);
	}
	return p[xx];
}

int main(){
	int t;
	cin>>t;
	while(t--){
		memset(p, 0, sizeof(p));
		cin>>n>>h>>r;
		for(int i = 1; i <= n; i++){
			p[i] = i;
		}
		int hh = 0, tt = 0;
		for(int i = 1; i <= n; i++){
			cin>>x[i]>>y[i]>>z[i];
			if(z[i] + r >= h){
				a[++hh] = i;
			}
			if(z[i] - r <= 0){
				b[++tt] = i;
			}
			for(int j = 1; j < i; j++){
				if(dis(i, j) <= 4 * r * r){
					int xx = fd(i), yy = fd(j);
					if(xx != yy){
						p[yy] = xx;
					}
				}
			}
		}
		int ok = 0;
		for(int i = 1; i <= hh; i++){
			if(ok) break;
			for(int j = 1; j <= tt; j++){
				if(fd(a[i]) == fd(b[j])){
					ok = 1;
					break;
				}
			}
		}
		if(ok) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}

4.搭配购买(01背包)

可以选择多个集合的云,所以要用 01 背包
在这里插入图片描述

#include<iostream>
using namespace std;
const int N = 1e4 + 10;
int p[N];
int c[N], d[N], vv[N], ww[N], f[N];
int n, m, w;

int fd(int x){
	if(x != p[x]){
		p[x] = fd(p[x]);
	}
	return p[x];
}

int main(){
	cin>>n>>m>>w;
	for(int i = 1; i <= n; i++){
		p[i] = i;
	}
	for(int i = 1; i <= n; i++){
		cin>>c[i]>>d[i];
	}
	int u, v;
	for(int i = 1; i <= m; i++){
		cin>>u>>v;
		int xx = fd(u), yy = fd(v);
		if(xx != yy){
			p[yy] = xx;
			c[xx] += c[yy];
			d[xx] += d[yy];
		}
	}
	int cnt = 0;
	for(int i = 1; i <= n; i++){
		if(i == p[i]){
			vv[++cnt] = c[i];
			ww[cnt] = d[i];
		}
	}
	for(int i = 1; i <= cnt; i++){
		for(int j = w; j >= vv[i]; j--){
			f[j] = max(f[j], f[j - vv[i]] + ww[i]);
		}
	}
	cout<<f[w];
	return 0;
}

5.朋友(下标有负数用map)

分别求 -1 和 1 的朋友有多少个(包括他们自己),然后取最小的,就是对数
在这里插入图片描述

#include<iostream>
#include<map>
using namespace std;
const int N = 1e4 + 10;
map<int, int> p;
int n, m, t1, t2;

int fd(int x){
	if(x != p[x]){
		p[x] = fd(p[x]);
	}
	return p[x];
}

int main(){
	cin>>n>>m>>t1>>t2;
	for(int i = -m; i <= n; i++){
		p[i] = i;
	}
	int x, y;
	for(int i = 1; i <= t1 + t2; i++){
		cin>>x>>y;
		int xx = fd(x), yy = fd(y);
		if(xx != yy){
			p[yy] = xx;
		}
	}
	int res1 = 0, res2 = 0;
	for(int i = -m; i <= -1; i++){
		int xx = fd(-1), yy = fd(i);
		if(xx == yy){
			res1++;
		}
	}
	for(int i = 1; i <= n; i++){
		int xx = fd(1), yy = fd(i);
		if(xx == yy){
			res2++;
		}
	}
	int res = min(res1, res2);
	cout<<res;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/535515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nvm更新node版本

1、nvm安装和管理多个 Node.js 版本&#xff1a;NVM 允许用户在计算机上同时安装多个不同版本的 Node.js。这使得开发人员可以轻松地在不同的项目中使用不同的 Node.js 版本&#xff0c;而无需手动安装或卸载。 2、nvm切换 Node.js 版本&#xff1a;通过 NVM&#xff0c;用户可…

一辆新能源汽车需要多少颗传感器?

随着科技的发展和环保意识的日益提高&#xff0c;新能源汽车&#xff08;包括纯电动汽车、混合动力汽车等&#xff09;在全球范围内越来越受到欢迎。这些汽车不仅减少了碳排放&#xff0c;还推动了汽车产业的创新。然而&#xff0c;这些高科技汽车的背后&#xff0c;隐藏着许多…

git lfs 大文件管理

简介 git-lfs 是 Git Large File Storage 的缩写&#xff0c;是 Git 的一个扩展&#xff0c;用于处理大文件的版本控制。 它允许你有效地管理和存储大型二进制文件&#xff0c;而不会使 Git 仓库变得过大和不稳定。以下是一些与 git-lfs 相关的常见命令和解释&#xff1a; 常…

zabbix“专家坐诊”第236期问答

问题一 Q&#xff1a;我的trap里已经可以收到信息了&#xff0c;后续要怎么创建监控项呀&#xff1f; A&#xff1a;参考&#xff1a; 问题二 Q&#xff1a;snmp和snmp trap咋搞&#xff1f; A&#xff1a;你指的是如何开启这些协议还是如何做监控项&#xff1f; Q&#xff1…

KVM部署

1、检查虚拟化支持 首先&#xff0c;确认你的系统处理器支持硬件虚拟化&#xff0c;在Linux终端中&#xff0c;使用以下命令&#xff1a; egrep -c (vmx|svm) /proc/cpuinfo2、安装KVM及其工具 yum update yum install qemu-kvm libvirt libvirt-python libguestfs-tools vi…

[大模型]基于 ChatGLM3 和 LangChain 搭建知识库助手

基于 ChatGLM3 和 LangChain 搭建知识库助手 环境配置 在已完成 ChatGLM3 的部署基础上&#xff0c;还需要安装以下依赖包&#xff1a; pip install langchain0.0.292 pip install gradio4.4.0 pip install chromadb0.4.15 pip install sentence-transformers2.2.2 pip inst…

主从数据同步原理

2.2.主从数据同步原理 2.2.1.全量同步 主从第一次建立连接时&#xff0c;会执行全量同步&#xff0c;将master节点的所有数据都拷贝给slave节点&#xff0c;流程&#xff1a; 这里有一个问题&#xff0c;master如何得知salve是第一次来连接呢&#xff1f;&#xff1f; 有几个…

深度学习Vue框架生命周期(三)

一.什么是生命周期&#xff1f; 在vue中&#xff0c;生命周期就是vue实例程序从创建到销毁的这个过程&#xff0c;在生命周期中&#xff0c;不同阶段我们可以做不同的事情。vue的生命周期是创建阶段、挂载阶段、更新阶段、销毁阶段 二.什么是钩子函数&#xff1f; 钩子函数就是…

什么是CSGO搬砖即游戏搬砖注意事项?

CSGO市场是指《反恐精英&#xff1a;全球攻势》游戏内的物品交易市场。玩家可以在这个市场上买卖各类虚拟物品&#xff0c;包括武器皮肤、刀具、手套等。CSGO市场的价格是由供需关系、稀有度、流行度等多个因素影响的。 一般来说&#xff0c;稀有度较高或者比较受欢迎的物品价…

科研学习|可视化——相关性结果的可视化

一、相关性分析介绍 相关性分析是指研究两种或者两种以上的变量之间相关关系的统计分析方法&#xff0c;一般分析步骤为&#xff1a; 1&#xff09;判断变量间是否存在关联&#xff1b;2&#xff09;分析关联关系&#xff08;线性/非线性&#xff09;、关联方向&#xff08;正相…

向南而行 攀“高”逐“新 ” ,南山举行深港校企成果对接交流活动

春风花草香&#xff0c;湾区气象新。 4月10日&#xff0c;“向南而行”深港校企成果对接交流活动在深圳人才公园求贤阁举行。南山与香港一家亲&#xff0c;“双向奔赴”拓展合作新空间。 今年是《粤港澳大湾区发展规划纲要》发布5周年。5年来&#xff0c;南山与香港从“硬联通…

大话设计模式——19.责任链模式(Chain of Responsibility Pattern)

简介 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 主要有两个核心行为&#xff1a;1.处理请求&#xff1b;2.将请求传递到下一节点 U…

vue简单使用四(计算属性、过滤器、侦听器和生命周期)

目录 计算属性&#xff1a; 侦听器&#xff1a; 过滤器&#xff1a; 生命周期 &#xff1a; 计算属性&#xff1a; 查看arrs这个数组的长度&#xff1a; 输出结果&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><me…

Windows终端添加git bash

环境&#xff1a;windows11 终端&#xff1a;windows terminal git bash默认的界面不太好看&#xff0c;添加到终端会比较好用 步骤 打开 windows terminal&#xff0c;在向下箭头 点击 设置左侧栏 点击 “添加新配置文件”&#xff0c;如下图配置&#xff0c;主要修改项&…

2024年Flink CDC 实时同步数据(MySQL到MySQL)

#准备工作# 看到一下图片说明执行成功&#xff01;&#xff01;&#xff01; 异常处理及分析&#xff1a; Could not execute SQL statement. Reason: org.apache.flink.sql.parser.impl.ParseException: Encountered "\connector\" at line 21, column 3. Was expec…

PostgreSQL强势崛起,选择它还是MySQL

大家好&#xff0c;关系型数据库&#xff08;RDBMS&#xff09;作为数据管理的基石&#xff0c;自数据仓库兴起之初便扮演着核心角色&#xff0c;并在数据科学的发展浪潮中持续发挥着价值。即便在人工智能和大型语言模型&#xff08;LLM&#xff09;日益成熟的今天&#xff0c;…

Linux使用C语言实现Socket编程

Socket编程 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 网络套接字 socket: &#xff08;电源&#xff09;插座&#xff08;电器上的&#xff09;插口&#xff0c;插孔&#xff0c;管座 在通信过程中, 套接字是成对存在的, 一个客户端的套接字, 一个…

医疗器械UDI码的DI和PI什么意思

一、理解医疗器械UDI 医疗器械的UDI码是Unique Device Identifier Code的缩写&#xff0c;意为唯一设备识别码。 医疗器械的UDI码是唯一设备识别码&#xff0c;由两个部分组成&#xff1a;DI和PI。 1.1、DI 理解 DI&#xff08;Device Identifier&#xff0c;设备标识符&am…

19、矩阵-螺旋矩阵

思路: 这道题主要是对空间上有所思考&#xff0c;每次转一圈上右下左各减少一层。不妨设top&#xff0c;right&#xff0c;down&#xff0c;left&#xff0c;每次旋转一圈 top&#xff0c;right--&#xff0c;down--&#xff0c;left 代码如下&#xff1a; class Solution …

【炒股Zero To Hero】MACD金叉死叉到底是否有效,加上这个指标回报率增加197倍

移动平均收敛散度&#xff08;MACD - Moving Average Convergence Divergence&#xff09;是一种趋势跟踪动量指标&#xff0c;显示了证券价格的两个移动平均之间的关系。它用于识别趋势的方向和强度&#xff0c;属于技术分析中振荡器的一类。 MACD如何衡量股票及其趋势 有两…