当前位置: 首页 > news >正文

【并查集】[ABC372E] K-th Largest Connected Components 题解

题意

前置阅读:并查集算法介绍

洛谷链接

Atcoder 链接

给定 n ( 1 ≤ n ≤ 2 × 1 0 5 ) n(1 \leq n \leq 2\times 10^5) n(1n2×105) 个点,初始没有边,您要进行以下操作:

1 a b,表示连接一条 ( a , b ) (a,b) (a,b) 无向边,保证 1 ≤ a < b ≤ n 1 \leq a < b \leq n 1a<bn

2 a b,表示查询在 a a a 这个联通块中,它能去到的点的编号的第 b b b 大的点为几号(可以去到的点包括这个点本身)。若无,输出 -1。保证 1 ≤ a ≤ n , 1 ≤ b ≤ 10 1 \leq a \leq n,1 \leq b \leq 10 1an,1b10

思路

考虑操作 2 中 b b b取值较小,用预处理的方式,记 c o n n e c t i , j connect_{i,j} connecti,j 表示在 i i i 这个联通块中第 j j j大的编号,维护合并即可。代码中 count 无法正常运行,用 define 替换即可。

代码

#include<bits/stdc++.h>
#define count coount
#define int long long
using namespace std;
int q,head[200005],n;
int connect[200005][21];
int count[200005];
int find(int x) {return head[x] == x?x:head[x] = find(head[x]);
} 
int a[25];
bool cmp(int x,int y) {return x > y;
}
void hebing(int x,int y) {int cnt = 1;for(;cnt <= count[x];cnt++) {a[cnt] = connect[x][cnt];}for(;cnt <= count[x] + count[y];cnt++) a[cnt] = connect[y][cnt - count[x]];cnt--;//printf("________%lld %lld %lld\n",count[x],count[y],cnt);sort(a + 1,a + cnt + 1,cmp);for(int i = 1;i <= 10 and i <= cnt;i++) connect[x][i] = a[i];return;
}
signed main() {scanf("%lld %lld",&n,&q);for(int i = 1;i <= n;i++) count[i] = 1,connect[i][1] = i,head[i] = i;while(q--) {int a,b,c;scanf("%lld %lld %lld",&a,&b,&c);if(a == 1) {b = find(b),c = find(c);if(b != c) {hebing(b,c);count[b] += count[c];if(count[b] > 10) count[b] = 10;head[c] = b;}}else {if(count[find(b)] < c) printf("-1\n");else printf("%lld\n",connect[find(b)][c]);}}return 0;
}

相关文章:

【并查集】[ABC372E] K-th Largest Connected Components 题解

题意 前置阅读&#xff1a;并查集算法介绍 洛谷链接 Atcoder 链接 给定 n ( 1 ≤ n ≤ 2 1 0 5 ) n(1 \leq n \leq 2\times 10^5) n(1≤n≤2105) 个点&#xff0c;初始没有边&#xff0c;您要进行以下操作&#xff1a; 1 a b&#xff0c;表示连接一条 ( a , b ) (a,b) …...

HarmonyOS面试题(持续更新中)

1、用过线程通信吗&#xff0c;线程是怎么进行通信的&#xff1f; emitter 和 eventHub 相同&#xff1a; 都是基于事件总线的 区别是&#xff1a; ① eventHub当前线程内通信 ② emitter是同一进程不同线程或者同一进程和同一线程也可以通信 2、页面和组件的生命周期 …...

QT中QWidget和QObject的区别与联系是什么

在Qt框架中&#xff0c;QWidget和QObject是两个核心类&#xff0c;它们各自扮演着不同的角色&#xff0c;但又紧密相连。以下是关于它们区别与联系的详细解释&#xff1a; 区别 基类和功能定位&#xff1a; QObject是Qt中所有类的基类&#xff0c;包括几乎所有的Qt对象。它提供…...

解决macOS安装redis以后不支持远程链接的问题

参考文档:https://blog.csdn.net/qq_37703224/article/details/142542179?spm1001.2014.3001.5501 安装的时候有个提示, 使用指定配置启动: /opt/homebrew/opt/redis/bin/redis-server /opt/homebrew/etc/redis.conf那么我们可以尝试修改这个配置文件: code /opt/homebrew/…...

2024年研究生数学建模“华为杯”E题——肘部法则、k-means聚类、目标检测(python)、ARIMA、逻辑回归、混淆矩阵(附:目标检测代码)

文章目录 一、情况介绍二、思路情况二、代码展示三、感受 一、情况介绍 前几天也是参加了研究生数学建模竞赛&#xff08;也就是华为杯&#xff09;&#xff0c;也是和本校的两个数学学院的朋友在网上组的队伍。昨天&#xff08;9.25&#xff09;通宵干完论文&#xff08;一条…...

绝了,自从用了它,我每天能多摸鱼2小时!

大家好&#xff0c;我是可乐。 俗话说的好&#xff1a;“摸鱼一时爽&#xff0c;一直摸鱼一直爽”。 作为一个程序员&#xff0c;是否有过调试代码熬到深夜&#xff1f;是否有过找不到解决方案而挠秃头顶&#xff1f; 但现在你即将要解放了&#xff0c;用了这款工具——秘塔…...

C语言指针系列1——初识指针

祛魅&#xff1a;其实指针这块儿并不难&#xff0c;有人说难只是因为基础到进阶没有处理好&#xff0c;大家要好好跟着一步一步学习&#xff0c;今天我们先来认识一下指针 指针定义&#xff1a;指针就是内存地址&#xff0c;指针变量是用来存放内存地址的变量&#xff0c;在同一…...

传神论文中心|第26期人工智能领域论文推荐

在人工智能领域的快速发展中&#xff0c;我们不断看到令人振奋的技术进步和创新。近期&#xff0c;开放传神&#xff08;OpenCSG&#xff09;传神社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自…...

NLP基础1

NLP基础1 深度学习中的NLP的特征输入 1.稠密编码&#xff08;特征嵌入&#xff09; 稠密编码&#xff08;Dense Encoding&#xff09;&#xff1a;指将离散或者高纬的稀疏数据转化为低纬度的连续、密集向量表示 特征嵌入&#xff08;Feature Embedding&#xff09; ​ 也称…...

001.docker30分钟速通版

docker简介 docker就是一个用于构建&#xff08;build&#xff09;&#xff0c;运行&#xff08;run&#xff09;&#xff0c;传送&#xff08;share&#xff09;应用程序的平台做一个不恰当的类比&#xff0c;就是外卖平台&#xff0c;如果你自己做华莱士不一定好吃&#xff0…...

Kafka 在 Linux 下的集群配置和安装

Kafka 在 Linux 下的集群配置和安装 Apache Kafka 是一个流行的分布式流处理平台&#xff0c;广泛用于实时数据管道和流处理应用。本文将详细讲解如何在 Linux 环境中配置和安装 Kafka 集群&#xff0c;并包括通过 Docker 安装和配置 Kafka 的步骤。每个步骤都将提供详细的解释…...

Python--操作列表

1.for循环 1.1 for循环的基本语法 for variable in iterable: # 执行循环体 # 这里可以是任何有效的Python代码块这里的variable是一个变量名&#xff0c;用于在每次循环迭代时临时存储iterable中的下一个元素。 iterable是一个可迭代对象&#xff0c;比如列表&#xff08;…...

JMeter(需要补充请在留言区发给我,谢谢)

一、学习工具 1、CinfigElement(HTTP Request Defaults、HTTP Header Manager、HTTP Authorization、CSV Data Set Config、User Defined Variables、JDBC Connection Configuration、HTTP Cookie Manager、Random Variable) 二、协议 1、HTTP协议&#xff08;消息体数据&am…...

线程池的执行流程和配置参数总结

一、线程池的执行流程总结 提交线程任务&#xff1b;如果线程池中存在空闲线程&#xff0c;则分配一个空闲线程给任务&#xff0c;执行线程任务&#xff1b;线程池中不存在空闲线程&#xff0c;则线程池会判断当前线程数是否超过核心线程数&#xff08;corePoolSize&#xff09…...

node-red-L3-重启指定端口的 node-red

重启指定端口 目的步骤查找正在运行的Node.js服务的进程ID&#xff08;PID&#xff09;&#xff1a;停止Node.js服务&#xff1a;启动Node.js服务&#xff1a; 目的 重启指定端口的 node-red 步骤 在Linux系统中&#xff0c;如果你想要重启一个正在运行的Node.js服务&#x…...

(done) 使用泰勒展开证明欧拉公式

问问神奇的 GPT&#xff0c;how to prove euler formula? 一个答案如下&#xff1a;...

红队apt--邮件钓鱼

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 免责声明: 本文仅供了解攻击方手法使用&#xff0c;切勿用于非授权情节 初步了解邮件基础 用途方面 这个我们应该比较熟悉&#xff0c;最常用于验证码接收&#xff0c;也有一些厂商会用这个来打广告&#xff0c;…...

十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)

十七&#xff0c;Spring Boot 整合 MyBatis 的详细步骤(两种方式) 文章目录 十七&#xff0c;Spring Boot 整合 MyBatis 的详细步骤(两种方式)1. Spring Boot 配置 MyBatis 的详细步骤2. 最后&#xff1a; MyBatis 的官方文档&#xff1a;https://mybatis.p2hp.com/ 关于 MyBa…...

DNS协议解析

DNS协议解析 什么是DNS协议 IP地址&#xff1a;一长串唯一标识网络上的计算机的数字 域名&#xff1a;一串由点分割的字符串名字 网址包含了域名 DNS&#xff1a;域名解析协议 IP>域名 --反向解析 域名>IP --正向解析 域名 由ICANN管理&#xff0c;有级别&#xf…...

每日一题——第一百零八题

题目&#xff1a; 写几个函数&#xff0c; ①输入10个职工的姓名和职工号 ②按照职工号由小到大排列&#xff0c; 姓名顺序也随之调整 ③要求输入一个职工号&#xff0c; 用折半查找找出该职工的姓名 #include<stdio.h> #include<string.h> #define MAX_EMPOLYEES…...

城通网盘解析工具:3步获取高速直连下载地址的终极方案

城通网盘解析工具&#xff1a;3步获取高速直连下载地址的终极方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否还在为城通网盘的蜗牛下载速度而烦恼&#xff1f;每次下载大文件都要经历漫长的…...

δ - mem:提升大型语言模型内存效率,得分最高可达 1.31 倍!

快速通道可了解 arXiv 成为独立非营利组织的情况&#xff0c;也能直达康奈尔大学官网。同时&#xff0c;还能通过链接进行捐赠&#xff0c;支持 arXiv 的发展。搜索与导航提供了多种搜索途径&#xff0c;可在所有字段&#xff08;标题、作者、摘要等&#xff09;进行搜索。还有…...

JetBrains IDE试用期重置终极指南:3种简单方法实现30天无限续杯

JetBrains IDE试用期重置终极指南&#xff1a;3种简单方法实现30天无限续杯 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否在使用IntelliJ IDEA、PyCharm、WebStorm等JetBrains IDE时遇到过试用期突然结束…...

AI 术语通俗词典:计算图

计算图是深度学习、自动微分、神经网络训练和人工智能框架中非常重要的一个术语。它用来描述&#xff1a;把一次数学计算过程表示成由节点和边组成的图结构。换句话说&#xff0c;计算图是在回答&#xff1a;模型中的输入、参数、运算和输出之间&#xff0c;到底是如何一步步连…...

工作流编排核心原理与实践:从概念到MiniFlow系统实现

1. 项目概述&#xff1a;从代码仓库到工作流编排的实践最近在梳理团队内部的一些自动化流程&#xff0c;发现很多脚本和任务散落在各个角落&#xff0c;执行依赖混乱&#xff0c;出了问题排查起来像大海捞针。正好看到GitHub上有个叫dnh33/workflow-orchestration的项目&#x…...

面试鸭:程序员面试备战工作台,构建结构化知识图谱与智能复习系统

1. 项目概述&#xff1a;一个面向求职者的“面试鸭”最近在技术社区里&#xff0c;看到不少朋友在讨论一个叫“mianshiya”的开源项目。乍一看这个名字&#xff0c;还以为是哪个美食博主分享的菜谱。点进去才发现&#xff0c;这其实是一个为程序员&#xff0c;特别是正在准备面…...

从零构建Next.js全栈应用:实战解析服务端渲染与API路由

1. 项目概述与核心价值最近在社区里看到不少朋友在讨论一个叫“panaverse/learn-nextjs”的项目&#xff0c;作为一个在Web开发领域摸爬滚打了十多年的老码农&#xff0c;我立刻来了兴趣。这个项目名直译过来就是“Panaverse的Next.js学习项目”&#xff0c;听起来像是一个学习…...

Python Pydantic介绍(数据校验、自动类型转换、结构化数据建模、序列化JSON、配置管理)pydantic-settings、核心BaseModel、字段约束Field()、FastAPI

文章目录Python 数据校验神器&#xff1a;Pydantic 完全指南一、什么是 Pydantic二、Pydantic 能解决什么问题1&#xff09;数据校验&#xff08;Validation&#xff09;2&#xff09;自动类型转换&#xff08;Parsing&#xff09;3&#xff09;结构化数据建模4&#xff09;序列…...

AI智能体开发实战:从Devin现象到代码辅助智能体构建

1. 项目概述&#xff1a;当开发者遇上AI智能体最近在GitHub上闲逛&#xff0c;发现一个叫“awesome-devins”的仓库热度飙升。点进去一看&#xff0c;好家伙&#xff0c;这简直是一个关于“AI智能体”的宝藏目录。这个由e2b-dev团队维护的项目&#xff0c;本质上是一个精心整理…...

WELearn网课助手完整指南:5大核心功能彻底解放你的英语学习时间

WELearn网课助手完整指南&#xff1a;5大核心功能彻底解放你的英语学习时间 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案&#xff1b;支持班级测试&#xff1b;自动答题&#xff1b;刷时长&#xff1b;基于生成式AI(ChatGPT)的答案生成 项目地址: https://g…...