子树包含了多少个节点(并查集)——czy的工程VS hdoj1856 More is better

C++ 并查集算法 C++的并查集就是判断你这个森林里有几棵树,代码如下: #include<iostream> using namespace std; int f,n,m,k,sum=0; int getf(int x) { if(f[x]==x) { return x; } else{ f[x]=getf(f[x]); return f[x]; } } void merge(int x,int y) { int t1,t2; if(x>y) { 阅读详情

问题 H: CZY的工程

时间限制: 1 Sec   内存限制: 128 MB
提交: 74   解决: 39
[ 提交][ 状态][ 讨论版]

题目描述

CZY总是遇到这样或那样的问题,现在他又遇到了一个,CZY接到一个大的工程,想想这是走上人生巅峰的第一步啊,CZY想想就高兴,可是这个工程太大了,他需要很多人的帮助才可以,但是为了方便工作,CZY希望他的团队两人两人之间都是朋友关系,或者间接是朋友关系。毕竟是大油水的工程啊,来了一群小伙伴报名,CYZ想请聪明的你帮忙算一算,他可以招到的最大的人数是多少

输入

输入包含多组测试数据,每组测试数据第一行一个n,表示来报名的小伙伴们的编号1-100,后边接n行,每行两个整数a b,表示编号a和b的小伙伴是朋友关系

输出

输出包括一行,即CZY可以招到的最大的人数是多少

样例输入

41 23 45 61 6

样例输出

4
#include<stdio.h>
int per[1000];
int num[1000];
int find(int x)
{
	if(per[x]==x)
	return x;
	return per[x]=find(per[x]);
}
void join(int x,int y)
{
	int dx=find(x);
	int dy=find(y);
	if(dx!=dy)
	{
		per[dy]=dx; //如果根节点不同,并到一起注意dy的根节点为dx                            ;
		num[dx]+=num[dy];//就是以dx为根节点的树有多少节点 
	}
}
int main()
{
	int T,i,a,b;
	while(~scanf("%d",&T))
	{
		for(i=1;i<1000;i++)
		{
			per[i]=i;//把每个元素的根节点都为它本身 
			num[i]=1;//数组初始化为1 
		}
		for(i=0;i<T;i++)
		{
			scanf("%d %d",&a,&b);
			join(a,b);
		}
		int m=0;
		for(i=0;i<1000;i++)//sum[i]指的是以i为根节点时这棵树的节点 ,求出节点最大值 
			if(num[i]>m)
			m=num[i];	
		printf("%d\n",m);
	}
	return 0;
}

More is better

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others)
Total Submission(s): 19091    Accepted Submission(s): 7017


Problem Description
Mr Wang wants some boys to help him with a project. Because the project is rather complex,  the more boys come, the better it will be. Of course there are certain requirements.

Mr Wang selected a room big enough to hold the boys. The boy who are not been chosen has to leave the room immediately. There are 10000000 boys in the room numbered from 1 to 10000000 at the very beginning. After Mr Wang's selection any two of them who are still in this room should be friends (direct or indirect), or there is only one boy left. Given all the direct friend-pairs, you should decide the best way.
 

Input
The first line of the input contains an integer n (0 ≤ n ≤ 100 000) - the number of direct friend-pairs. The following n lines each contains a pair of numbers A and B separated by a single space that suggests A and B are direct friends. (A ≠ B, 1 ≤ A, B ≤ 10000000)
 

Output
The output in one line contains exactly one integer equals to the maximum number of boys Mr Wang may keep. 
 

Sample Input
  
4 1 2 3 4 5 6 1 6 4 1 2 3 4 5 6 7 8
 

Sample Output
  
4 2
Hint
A and B are friends(direct or indirect), B and C are friends(direct or indirect), then A and C are also friends(indirect). In the first sample {1,2,5,6} is the result. In the second sample {1,2},{3,4},{5,6},{7,8} are four kinds of answers.

这道题目的目的是想知道经过一系列的合并操作之后,查询在所有的子树中,秩的最大值是多少,简而言之,就是最大的那颗子树包含了多少个节点。

很显然,这个问题也能够同时使用两种优化策略,只不过因为要求最大秩的值,需要有一个变量来记录。那么在哪个地方来更新它是最好的呢?我们知道,在按秩进行合并的时候,需要比较两颗待合并子树的秩,因此可以顺带的将对秩的最大值的更新也放在这里进行,实现代码如下:

*我的思路大概是,先建立一个并查集数组,一个标记数组(主要为了防止超时),一个组员数量数组。首先先把并查集数组初始话为本身,并把组员数量初始化为1,之后就是按代码上理解下思路*/
#include<stdio.h>
int per[1000000];
int num[1000000];
int find(int x)
{
	if(per[x]==x)
	return x;
	return per[x]=find(per[x]);
}
void join(int x,int y)
{
	int dx=find(x);
	int dy=find(y);
	if(dx!=dy)
	{
		per[dy]=dx;
		num[dx]+=num[dy];
	}
}
int main()
{
	int n,i,a,b;
	while(~scanf("%d",&n))
	{
		if(n==0)
		{
		printf("1\n");//在讨论区看到的,不知道为什么? 
		continue;
		}
		for(i=1;i<=1000000;i++)
		{
			per[i]=i;
			num[i]=1;
		}
		int max=0;
		for(i=0;i<n;i++)
		{
			scanf("%d %d",&a,&b);//求得输入的数字最大是多少,因为爆过一次,所以加上这个  
			if(a>max)
			max=a;
			if(b>max)
			max=b;
			join(a,b);
		}
		int m=0;
		for(i=1;i<=max;i++)//直接从1求到max出即可,求出真正最大值  
		{
			if(num[i]>m)
			m=num[i];
		}
		printf("%d\n",m);
	}
	return 0;
}



【无人机智能避障】基于深度强化学习的城市复杂环境路径规划实战 本文探讨了基于深度强化学习的无人机在城市复杂环境中的智能避障与路径规划。针对传统算法难以应对动态与非结构化障碍的痛点,文章详细介绍了如何利用DQN算法,通过设计合理的状态空间、奖励函数,并结合经验回放、目标网络等技巧,训练无人机自主学会在楼宇间安全、高效飞行的策略。 阅读详情

相关推荐

C# 死锁:原理、诊断与解决方案深度解析

本文深入探讨了C#中的死锁问题,详细介绍了死锁的基本概念、形成机制、常见场景、诊断方法及解决方案。死锁通常发生在多线程环境下,当多个线程因争夺资源而互相等待时,导致程序无法继续执行。文章通过代码示例展示了常见的死锁场景,如锁的嵌套、同步上下文死锁和线程池死锁,并提供了使用Visual Studio、WinDbg等工具进行死锁诊断的方法。此外,文章还提出了多种预防和解决死锁的策略,包括保持锁顺序一致性、使用锁超时机制、避免同步阻塞异步代码以及使用更高级的同步原语。通过这些方法,开发者可以有效减少死锁的发生,提

记录学习的过程 1407

并查集(求树的节点的总个数)

并查集(求树的节点的总个数) 题目描述 CZY总是遇到这样或那样的问题,现在他又遇到了一个,CZY接到一个大的工程,想想这是走上人生巅峰的第一步啊,CZY想想就高兴,可是这个工程太大了,他需要很多人的帮助才可以,但是为了方便工作,CZY希望他的团队两人两人之间都是朋友关系,或者间接是朋友关系。毕竟是大油水的工程啊,来了一群小伙伴报名,CYZ想请聪明的你帮忙算一算,他可以招到的最大的人数是多

hpulw 1298

避开这些坑!晶圆封装中Wire Bonding(引线键合)的5种常见不良与实战调试心得

本文深入探讨晶圆封装中Wire Bonding(引线键合)的5种常见不良现象,包括Wire Offset、BSOB不良、球径/球厚异常、弧度不良和IMC问题。通过实际案例和参数优化方案,帮助工程师提升封装质量和可靠性,特别适用于半导体封装领域的专业人士。

weixin_33672109的博客 524

The Suspects(并查集求节点数)

The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 28164   Accepted: 13718 Description Severe acute respiratory syndrome (SARS), an atypical pneumoni...

weixin_34368949的博客 192

深入解析Panfrost驱动:Mali-GPU开源驱动的架构与实现

本文深入解析了Panfrost驱动作为Mali-GPU开源驱动的架构与实现。从诞生背景到硬件架构演进,详细介绍了Panfrost如何突破ARM闭源策略,实现全栈支持。文章还探讨了驱动设计中的关键技术挑战与性能优化策略,为开发者提供了实用的编译部署指南和性能调优方法。

weixin_30790841的博客 552

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1904

偶数树 并查集

Description给你一棵有n个节点的树(一个无环简单图),节点序号为1~n,根节点为1。 请你找出一个最大的整数k,表示从这棵树上断掉k条边使其所有的子树的节点数都为偶数。Input第一行输入两个整数N,M。表示这棵树有N个节点和M条边。 接下来有M行,每行输入两个整数u,v,表示u节点和v节点间有一条边相连。数据保证:2 ≤ n ≤ 100,并且所有的节点都在一棵树上。 输入的树总能被

xinxiaxindong的博客 724

热力学仿真软件:ANSYS CFX_(15).旋转机械仿真

创建旋转域在中选择需要设置为旋转域的区域。选择选项。设置旋转速度在设置中,指定旋转速度(单位为弧度/秒)。也可以选择选项,并输入具体值。设置旋转轴在设置中,指定旋转轴的方向和位置。通常旋转轴的方向可以使用单位向量来表示,例如[0, 0, 1]表示沿Z轴旋转。旋转轴的位置可以通过指定一个点的坐标来确定,例如[0, 0, 0]表示旋转轴通过原点。旋转机械的仿真在ANSYS CFX中是一个复杂但重要的过程。

kkchenjj的博客 1158

洛谷题目目录

#1 新手村 关卡1-1 洛谷的第一个任务 超级玛丽游戏(洛谷-P1000):点击这里 A+B Problem(洛谷-P1001):点击这里 小玉买文具(洛谷-P1421):点击这里 小鱼的游泳时间(洛谷-P1425):点击这里 关卡1-2 顺序与分支 小玉家的电费(洛谷-P1422):点击这里 不高兴的津津(洛谷-P1085):点击这里 津津的储蓄计划(洛谷-P1089):点击这里 买铅笔(洛谷...

zqhf123的博客 25万+

手把手入门YOLO到改进优化教程 | 【P6进阶篇】YOLOv8模型剪枝优化实战-LAMP剪枝

本节首先介绍LAMP剪枝相关理论。然后结合YOLO框架,手把手搭建剪枝工程,包括配置文件修改、剪枝脚本构建等内容。

嵌入式阿齐Archie 2万+

C# WinForms 多语种切换实现:打造国际化应用程序

合理实现多语种切换功能可以显著提升应用程序的国际化水平。模块化设计:将本地化逻辑模块化,便于管理和维护。异常处理:始终捕获和处理可能的异常,确保程序的健壮性。资源管理:合理管理资源文件,避免重复和遗漏。测试:在不同语言环境下进行全面测试,确保所有字符串都能正确显示。文档和注释:为关键代码添加详细的文档和注释,便于后续维护。

墨夶的博客 1691

2627 树的深度及子树大小(并查集)

现在有一棵n个节点的树,节点1为这棵树的根,求出每个节点的深度以及每个节点的子树中的节点个数。 输入 第1行:一个数字n,表示树中节点的个数。(1<=n<=100000) 第2-n行:每行两个数字u,v,表示u与v之间有一条边。(1<=u,v<=n) 输出 输出n行,每行两个正整数,第i行的第一个正整数表示节点i的深度,第二个正整数表示以节点i为根的子树大小。 输入样例 1...

晚安( ̄o ̄) . z Z 2026

C#里用HttpListener实现WEB API接口服务端

本文介绍了一个基于WinForm的HTTP服务实现方案。该方案使用HttpListener类创建了一个支持JSON POST请求处理的轻量级Web服务器,主要特点包括:1) 纯线程方式实现请求监听和处理;2) 提供标准化的JSON响应格式;3) 支持自定义请求处理逻辑;4) 包含完整的日志记录功能。代码示例展示了如何初始化服务、处理不同类型的请求(包括JSON POST),并提供了线程安全的UI更新机制。该实现适用于需要简单HTTP接口的Windows桌面应用程序,可作为程序间通信的基础设施。

大坡3D软件开发 228

二叉树的子树和子结构

子树的意思是包含了一个结点,就得包含这个结点下的所有节点,一棵大小为n的二叉树有n个子树,就是分别以每个结点为根的子树。子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。 直接上代码。这解释起来也蛋疼。 一.一个二叉树树是另一二叉树的子结构。 class Solution: public: bool isSubtree(TreeNode* pRoot1,TreeNode*...

YenKoc的博客 1499

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

并查集

并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。 使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk},一般都会使用一个整数表示集合中的一个元素。 每个集合可能

搞么子小子 654

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

树的子结构和子树的区别java

出自剑指offer的一道题《树的子结构》 子树:一颗有n个节点的树也有n个子树,他的每个节点都可以作为根节点构成一颗树 子结构:如下图,红框就是一个子结构,但是不是一颗子树。 换句话说,下图的节点4也是一个子结构但不是子树,这也说应该就好理解了 (图片侵删) 原题描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) public class TreeN...

weixin_43761642的博客 1462

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdoj2007(java)平方和与立方和

平方和与立方和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 139859    Accepted Submission(s): 44757 Problem Description 给定一段连续的整数,求出他们中所有

GoodLuckAC的博客 2338

hdoj2023(java)求平均成绩(二维数组+一维数组+格式问题+行转化列)

求平均成绩 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 100836    Accepted Submission(s): 23407 Problem Description 假设一个班有n(n   I

GoodLuckAC的博客 1729

hdoj 2020 (java)绝对值排序(Math.abs()函数应用以及数组冒泡排序)

绝对值排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 64703    Accepted Submission(s): 31130 Problem Description 输入n(n   In

GoodLuckAC的博客 1559

hdoj2011 (java)多项式求和

多项式求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 65082    Accepted Submission(s): 37387 Problem Description 多项式的描述如下: 1 - 1/2 +

GoodLuckAC的博客 1479

hdoj 1089~1096 八道简单A+B问题 (JAVA)

1089 Sample Input 1 5 10 20 Sample Output 6 30 import java.util.*; import java.math.*; import java.io.*; public class Main1 { public static void main(String[] args) { // TODO Auto-generated

GoodLuckAC的博客 1478

hdoj2015(java)偶数求和 (找规律,总结)常看

偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 72936    Accepted Submission(s): 31032 Problem Description 有一个长度为n(n   Input

GoodLuckAC的博客 1421

hdoj2009 (java)求数列的和

求数列的和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 67832    Accepted Submission(s): 41372 Problem Description 数列的定义如下: 数列的第一项为n,以

GoodLuckAC的博客 1408

杭电1201 18岁生日

18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23411    Accepted Submission(s): 7494 Problem Description Gardon的18岁生日就要到了,他当然很

GoodLuckAC的博客 1308

杭电oj1969 pie(二分法)

Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6614    Accepted Submission(s): 2506 Problem Description My birthday is coming up

GoodLuckAC的博客 1302

hdoj2013(java) 找规律 蟠桃记

蟠桃记 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 52568    Accepted Submission(s): 39179 Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事

GoodLuckAC的博客 1151
上一篇: 循环节的长度,循环节,循环次数(kmp)
下一篇: 杭电oj1875畅通工程再续(prim VS kruskal) 模板题
JINKELA_
博客等级 码龄11年 75粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值