P2835 刻录光盘

news2024/9/27 14:04:19

题目描述

在JSOI2005夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习。组委会觉得这个主意不错!可是组委会一时没有足够的空光盘,没法保证每个人都能拿到刻录上资料的光盘,又来不及去买了,怎么办呢?!

组委会把这个难题交给了LHC,LHC分析了一下所有营员的地域关系,发现有些营员是一个城市的,其实他们只需要一张就可以了,因为一个人拿到光盘后,其他人可以带着U盘之类的东西去拷贝啊!

可是,LHC调查后发现,由于种种原因,有些营员并不是那么的合作,他们愿意某一些人到他那儿拷贝资料,当然也可能不愿意让另外一些人到他那儿拷贝资料,这与我们JSOI宣扬的团队合作精神格格不入!!!

现在假设总共有N个营员(2<=N<=200),每个营员的编号为1~N。LHC给每个人发了一张调查表,让每个营员填上自己愿意让哪些人到他那儿拷贝资料。当然,如果A愿意把资料拷贝给B,而B又愿意把资料拷贝给C,则一旦A获得了资料,则B,C都会获得资料。

现在,请你编写一个程序,根据回收上来的调查表,帮助LHC计算出组委会至少要刻录多少张光盘,才能保证所有营员回去后都能得到夏令营资料?

输入格式

先是一个数N,接下来的N行,分别表示各个营员愿意把自己获得的资料拷贝给其他哪些营员。即输入数据的第i+1行表示第i个营员愿意把资料拷贝给那些营员的编号,以一个0结束。如果一个营员不愿意拷贝资料给任何人,则相应的行只有1个0,一行中的若干数之间用一个空格隔开。

输出格式

一个正整数,表示最少要刻录的光盘数。

输入输出样例

输入 #1复制

5
2 3 4 0
4 5 0
0
0
1 0

输出 #1复制

1

1.刚开始,我用的是并查集,然而只AC了几个案列,28分。这道题是用到了并查集,但是不能是这么使用。

2.因为并查集是双向的,题目的意思却不是这样,就好比,甲认为乙和丙是他的好朋友,有可能乙不这么认为,而且乙和丙并不一定认识,所以也不一定能成为朋友。是   不满足  朋友的朋友就是朋友  的,而并查集恰好说的是   朋友的朋友就是朋友。 

3.我看了一下题解Tarjan算法我并不会,偶然看到了有人说Floyd也可以,Floyd是较为简单的算法(但是时间复杂度是o(n^3)),题目说n的取值是200,那Floyd的完全可以的。如果不了解Floyd算法,可以看一下这篇2022年第13周_lxh0113的博客-CSDN博客。

4.在Floyd算法中,这里我们需要判断的是  a[i][k]  和  a[k][j]  这俩个都需要有值,这个代表的是如果  i  要通过  k  给  j   。如果可行,我们就标记当前 a[i][j] 是   1。还有一种情况就是  i  到  j  不需要通过任何人,本身就可以到,我们也要赋值为  1 .

5.然后接下来一步其实就是利用了并查集的思想。

b数组是并查集数组,已经初始化过了。而上面这段代码代表的是,如果 i  到  j  是有值的,也就是说 j 能够通过 i 得到 资料(光盘)。那么 j 的祖先就可以设置为 i。

6.所以到最后我们按照并查集的思想,找祖宗即可,也就是  x=b[x] 。统计即可。

C语言代码如下:

#include<stdio.h>
#define N 240
int a[N][N],b[N],n;
int main()
{
	int i,j,k,count=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		b[i]=i;
		scanf("%d",&k);
		while(k)
		{
			a[i][k]=1;
			scanf("%d",&k);
		}
	}
	for(k=1;k<=n;k++)
	{
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=n;j++)
			{
				if(a[i][k]&&a[k][j]||a[i][j])
					a[i][j]=1;
			}
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(a[i][j])
				b[j]=b[i];
		}
	}
	for(i=1;i<=n;i++)
	{
		if(i==b[i]) count++;
	}
	printf("%d\n",count);
	return 0;
}

C++代码如下:

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

const int N = 240;
int a[N][N], b[N], n;
int main() 
{
	int k, count = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) 
	{
		b[i] = i;
		cin >> k;
		while (k) 
		{
			a[i][k] = 1;
			cin >> k;
		}
	}
	for (k = 1; k <= n; k++) 
	{
		for (int i = 1; i <= n; i++) 
		{
			for (int j = 1; j <= n; j++) 
			{
				if ((a[i][k] && a[k][j]) || a[i][j])
					a[i][j] = 1;
			}
		}
	}

	for (int i = 1; i <= n; i++) 
	{
		for (int j = 1; j <= n; j++) 
		{
			if (a[i][j]) b[j] = b[i];
		}
	}

	for (int i = 1; i <= n; i++) 
	{
		if (i == b[i]) count++;
	}
	
	cout << count ;
	return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二、入门案例

文章目录二、入门案例1、开发环境2、创建数据库及表2.1 创建表2.2 添加数据3、创建Spring Boot工程3.1 初始化工程3.2 引入依赖3.3 idea中安装lombok插件4、编写代码4.1 配置application.yml4.2 启动类4.3 添加实体4.4 添加mapper4.5 测试4.6 添加日志【尚硅谷】MyBatisPlus教程…

盘点ERP系统应具备的10个核心功能

ERP系统在数据管理解决方案中名列前茅。对于许多企业来说&#xff0c;ERP是数据分析、自动化和全面基础设施整合的理想解决方案。还不知道如何选择正确的ERP系统解决方案&#xff1f;别担心&#xff0c;本文盘点了ERP系统应具备的10个核心功能。 1. 集成 该ERP功能是该解决方…

怎么录屏幕视频,不要错过这4种简单的电脑录屏方法

屏幕截图和屏幕录制是我们日常生活中常用的一种手段。比如把自己感兴趣的视频录下来和朋友们分享&#xff0c;或者录制操作视频教程让大家知道怎么做。那怎么录屏幕视频&#xff0c;今天在这里小编为大家推荐4种简单的电脑录屏方法&#xff0c;有需要的小伙伴可以往下看看。电脑…

如何学习批判性思维?——以是什么、为什么、怎么样为视角

写这篇文章有两个目的&#xff1a; 希望对研究者做课题有所帮助。希望整个社会能更多地去思考别人的观点到底成不成立。这点是我们很缺乏的。我会列出国内常见的一些逻辑谬论来加以阐述。 &#xff08;图&#xff1a;批判一个观点的统一框架&#xff09; 一、逻辑陈述划分 …

第五届字节青训营笔试后端编程练习题解

文章目录前言T1.36进制加法&#xff08;模拟&#xff09;题面思路代码T2.电影院选座&#xff08;DFS&#xff09;题面思路代码T3.IP地址&#xff08;DFS&#xff09;题面思路代码前言 前段时间&#x1f40f;了&#xff0c;今天简单写了一下&#xff0c;不知道如何提交代码进行…

新年新玩法,数组“招婿”:老许,你要老婆不要?

文章目录前言一、电梯“招婿”启示风波1.1、寻找“一位又高又帅的 IT 同行人员”1.2、数组“招婿”核心代码1.3、代码全是错误&#xff0c;水平不高二、Java 声明、创建、初始化数组2.1、数组声明存在的语法错误2.2、数组声明、创建、初始化的正确方式三、Java 中对于不同数据类…

尚医通-医院详情-科室接口-显示科室前端整合(二十四)

目录&#xff1a; &#xff08;1&#xff09;医院详情-功能 实现 &#xff08;2&#xff09;医院排班-需求分析 &#xff08;3&#xff09;医院排班-科室接口开发 &#xff08;4&#xff09;医院排班-显示科室前端整合 &#xff08;1&#xff09;医院详情-功能 实现 在Ho…

基于KT6368A芯片开发SOP8蓝牙自拍杆方案记录总结

一、简介给客户开发一款蓝牙自拍杆的方案芯片&#xff0c;使用KT6368A单芯片解决。两种实现逻辑1、由客户的遥控MCU来控制蓝牙芯片的开启和关闭 2、由KT6368A蓝牙芯片自己完成所有的事情&#xff0c;分两个按键&#xff0c;一个按键短按开机&#xff0c;短按关机。第二个按键实…

【SPI实验--数码管】

SPI实验--数码管一、SPI概念二、SPI硬件连接三、SPI总线通信协议四、SPI四种通信模式五、代码实现数码管一、SPI概念 1.SPI总线是Motorola首先提出的全双工三线制/四线制同步串行总线 2.采用主从模式&#xff08;Master Slave&#xff09;架构&#xff0c;支持多slave模式应用…

预测2023年Web3的9大发展趋势

Crypto 和 DeFi 在 2022 年深陷熊市&#xff0c;但 Web3 方面的需求刚刚才开始获得关注。在过去的 12 个月里&#xff0c;Web3 相关的搜索与 2021 年底的峰值相比&#xff0c;一直保持在 30% 以内&#xff0c;下一个上升趋势可能正在到来。下面我列出了目前势头正旺的 9 个 Web…

PIPE接口基本描述

信号名方向描述TxDataIN并行数据输入总线TxDataValidIN1&#xff1a;表示cycle数据有效&#xff1b;0&#xff1a;表示cycle数据无效RxDataOUT并行数据输出总线RxValidOUT1&#xff1a;表示符号锁及当RxDataValid有效时&#xff0c;数据有效 PHY MODEINPHY STATUSOUT SerDesA…

java swing电子商务系统

一、项目简介 本项目是一套基于java swing的电子商务系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;ec…

opencv案例实战——银行卡模式匹配识别

系列文章目录 1.图像读取及其通道与灰度 2.图像填充与图像融合 3.图像滤波 4.图像阈值 5.腐蚀与膨胀 6.图像梯度 7.边缘检测 8.轮廓与轮廓特征 银行卡模式匹配识别系列文章目录前言案例介绍划分模板1.思路2.获取边缘3.获取外接矩形图像预处理切割礼帽操作分割数字块sobel算子膨…

LeetCode题解 二叉树(十):654 最大二叉树;617合并二叉树

654 最大二叉树 medium 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构…

RHCEansible 编写playbook---yaml

YAML 语言特性 YAML的可读性好 YAML和脚本语言的交互性好 YAML使用实现语言的数据类型 YAML有一个一致的信息模型 YAML易于实现 YAML可以基于流来处理 YAML表达能力强&#xff0c;扩展性好YAML的三种数据结构 对象&#xff1a; 键值对的集合&#xff0c;又称为映射、哈希、字典…

Map数据结构详解

Map Object本质上是键值对的集合&#xff08;Hash结构&#xff09;&#xff0c;但Object只能将字符串当做键&#xff0c;这就给Object带来了很大的限制。 let data {} let s {name : 东方不败} data[s] 西方求败// 如果键传入非字符串的值&#xff0c;会自动为字符串 cons…

思科路由器DHCPv6服务配置

配置如下 Router>ena Router#conf t Router(config)#host R1 R1(config)#ipv6 unicast-routing R1(config)#int g0/0 R1(config-if)#ipv6 add 2001:1::1/64 R1(config-if)#no sh R1(config-if)#exit R1(config)#service dhcp R1(config)#ipv6 local pool v6pool …

CTF中的PHP特性函数(中)

前言 上篇文章给大家带来了PHP中最基本的特性&#xff0c;不知道大家学习的怎样了&#xff0c;回顾上文&#xff0c;我们讲了MD5强弱碰撞以及正则匹配的绕过&#xff0c;总体来看还是很简单的&#xff0c;下面给大家带来新的PHP特性讲解&#xff0c;会稍微比上一篇难一些。 i…

开源工作流引擎如何支撑企业级 Serverless 架构?

作者&#xff1a;董天欣&#xff08;雾雾&#xff09; Serverless 应用引擎&#xff08;SAE&#xff09;是一款底层基于 Kubernetes&#xff0c;实现了 Serverless 架构与微服务架构结合的云产品。作为一款不断迭代的云产品&#xff0c;在快速发展的过程中也遇到了许多挑战。如…

2022年统一大市场研究报告

第一章 行业概况 国内统一大市场指的是在全国范围内&#xff0c;在充分竞争以及由此形成的社会分工基础上&#xff0c;各地区市场间、各专业市场间形成了相互依存、相互补充、相互开放、相互协调的有机的市场体系。在这种市场体系下&#xff0c;商品和要素能够按照价格体系的调…