2024牛客暑期多校训练营2 B MST

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

Sajin has recently delved into the study of minimum spanning trees and now he has mastered the algorithm of MST.

He is eager to assess your grasp of minimum spanning tree concepts through a series of queries.

You are confronted with an weighted undirected graph that encompasses nnn vertices and mmm edges without any self-loops.

Sajin presents qqq inquiries. For each, a vertex set S is given. Your objective is to determine the induced subgraph of S and find the weight of its minimum spanning tree.

A minimum spanning tree (MST) is a subset of the edges of a connected, edge-weighted graph that connects all the vertices together without any cycles and with the minimum possible total edge weight.

In the mathematical field of graph theory, an induced subgraph of a graph is another graph, formed from a subset of the vertices of the graph and all of the edges, from the original graph, connecting pairs of vertices in that subset.

If the induced subgraph of S is disconnected, output -1.

输入描述:

The first line contains 333 integers n, m, q (2≤n≤1e5,1≤m,q≤1e5 ), — the number of points, the number of edges, and the number of queries.

Then m lines follow, each line contains three integers u​, v​, w​(1≤ui,vi≤n,1≤wi​≤1e9), — the two endpoints of the iii-th edge and the edge weight.

Next q lines, each line first contains an integer ki(1≤ki≤n) — the size of the vertex set S for the iii-th query.

Then followed by ki distinct integers si,j​(1≤si,j≤n) — the numbers of the vertex set S for the iii-th query.


It is guaranteed that the sum of ki over all queries does not exceed 1e5.

输出描述:

For each query, output one integer representing the answer.

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

输入

复制5 10 5 1 2 1 1 3 1 1 4 1 1 5 1 2 3 2 2 4 2 2 5 2 3 4 3 3 5 3 4 5 4 5 1 2 3 4 5 4 2 3 4 5 3 3 4 5 2 4 5 1 5

5 10 5
1 2 1
1 3 1
1 4 1
1 5 1
2 3 2
2 4 2
2 5 2
3 4 3
3 5 3
4 5 4
5 1 2 3 4 5
4 2 3 4 5
3 3 4 5
2 4 5
1 5

输出

复制4 6 6 4 0

4
6
6
4
0

示例2

输入

复制3 2 1 1 2 1 2 3 1 2 1 3

3 2 1
1 2 1
2 3 1
2 1 3

输出

复制​​​​​​​-1

-1

题意

有n个点,m条边,q此询问。

对于每次询问,输出连接给出的k个点所需的代价为多少。

思路

用最小生成数,求连接给出的k个点所需的最小代价。

​
​
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define pii pair<int,int>
using namespace std;
const int N=1e6+10;
int fa[2*N],vis[2*N];
map<pii,int> mp;
vector<int> a;
struct node{
	int u,v,w;
}s[2*N],e[2*N];
bool cmp(node x,node y){
	return x.w<y.w;
}
int find(int x){
	return fa[x]==x?x:fa[x]=find(fa[x]);
}
signed main()
{
	int n,m,q;
	cin>>n>>m>>q;
	//存图 
	for(int i=1;i<=m;i++){
		cin>>s[i].u>>s[i].v>>s[i].w;
		if(mp[{s[i].u,s[i].v}]==0)mp[{s[i].u,s[i].v}]=s[i].w;
		else mp[{s[i].u,s[i].v}]=min(mp[{s[i].u,s[i].v}],s[i].w);
			
	}
	sort(s+1,s+m+1,cmp);
	while(q--){
		a.clear();//清空 
		int k;
		cin>>k;
		int cnt=0;
		for(int i=0;i<k;i++){
			int x;
			cin>>x;
			a.push_back(x);
			fa[x]=x;//初始化父节点的指向 
		}
		if(k<sqrt(n)){
            //寻找边是否存在 
			for(int i=0;i<k;i++){
				for(int j=0;j<k;j++){
					if(mp.count({a[i],a[j]})){
						e[++cnt]={a[i],a[j],mp[{a[i],a[j]}]};
					}
				}
			}
		}
		else{
			for(auto it:a){
				vis[it]=1;
			}
			for(int i=1;i<=m;i++){
				if(vis[s[i].u]&&vis[s[i].v])e[++cnt]=s[i];
			}
		}
		sort(e+1,e+1+cnt,cmp);
		int ans=0,sum=0;
		for(int i=1;i<=cnt;i++){
			if(find(e[i].u)!=find(e[i].v)){
				fa[find(e[i].u)]=find(e[i].v);
				ans+=e[i].w;
				sum++;
			}
			if(sum>=k-1)break;
		}
		if(sum<k-1) cout<<-1<<endl;
		else cout<<ans<<endl;
        //使标记数组还原
		for(auto it:a){
			vis[it]=0;
		}
	}
	return 0;
}

​

​

 

飞思卡尔智能车竞赛是一项备受关注的科技赛事,旨在激发学生的创新和实践能力,尤其是在嵌入式系统、自动控制和机器人技术等关键领域。其中的“电磁组”要求参赛队伍设计并搭建一辆能够自主导航的智能车,通过电磁感应线圈感知赛道路径。本压缩包文件提供了一套完整的电磁组智能车程序,这是一套经过实战验证的代码,曾在校级比赛中获得第二名的优异成绩。 该程序的核心内容可能涉及以下关键知识点: 传感器处理:文件名“4sensor”表明车辆配备了四个传感器,用于获取环境信息。这些传感器很可能是电磁感应传感器,用于探测赛道上的导电线圈。通过分析传感器信号的变化,车辆能够判断自身的行驶方向和位置。 数据采集与滤波:在实际运行中,传感器读数可能受到噪声干扰,因此需要进行数据滤波以提高精度。常见的滤波算法包括低通滤波、高斯滤波和滑动平均滤波等,以确保车辆对赛道的判断准确无误。 路径规划:车辆需要根据传感器输入实时规划行驶路径。这可能涉及PID(比例-积分-微分)控制、模糊逻辑控制或其他现代控制理论方法,从而确保车辆能够稳定且快速地沿赛道行驶。 电机控制:智能车的驱动通常依赖于直流电机或无刷电机,电机控制是关键环节。程序中可能包含电机速度和方向的调节算法,如PWM(脉宽调制)控制,以实现精准的运动控制。 嵌入式系统编程:飞思卡尔智能车的控制器可能基于飞思卡尔微处理器(例如MC9S12系列)。编程语言通常为C或C++,需要掌握微控制器的中断系统、定时器和串行通信等功能。 软件架构:智能车软件通常具有清晰的架构,包括任务调度、中断服务程序和主循环等。理解和优化这一架构对于提升整体性能至关重要。 调试与优化:程序能够在比赛中取得好成绩,说明经过了反复的调试和优化。这可能涉及代码效率提升、故障排查以及性能瓶颈的识别和解决。 团队协作与版本控制:在项目开发过程中,团队协作和版本控制工具(如Git)的应用不可或缺,能够保
双闭环直流电机调速系统是一种高效且应用广泛的直流调速技术。通过设置转速环和电流环两个闭环,系统能够对电机的转速和电流进行精准控制,从而提升动态响应能力和稳定性,广泛应用于工业自动化领域。 主电路设计:主电路采用三相全控桥整流电路,将交流电转换为可调节的直流电,为电机供电。晶闸管作为核心元件,通过调节控制角α实现输出电压的调节。 元部件设计:包括整流变压器、晶闸管、电抗器等元件的设计与参数计算,这些元件的性能直接影响系统的稳定性和效率。 保护电路:设计过载保护、短路保护等保护电路,确保系统安全运行。 驱动电路:设计触发电路和脉冲变压器,触发电路用于触发晶闸管导通,脉冲变压器用于传递触发信号。 控制器设计:系统核心为转速调节器(ASR)和电流调节器(ACR),分别对转速和电流进行调控。检测电路用于采集实际转速和电流值并反馈给调节器。 仿真分析:利用MATLAB/SIMULINK等工具对系统进行仿真分析,验证其稳定性和性能指标是否达标。 方案确定与框图绘制:明确系统构成及各模块连接方式。 主电路设计:选择整流电路形式,设计整流变压器、晶闸管等元部件并计算参数。 驱动电路设计:设计触发电路和脉冲变压器,确保晶闸管准确触发。 控制器设计: 转速调节器(ASR):根据转速指令调整实际转速。 电流调节器(ACR):根据ASR输出指令调整电流,实现快速响应。 参数计算:计算给定电压、调节器、检测电路、触发电路和稳压电路的参数。 仿真分析:通过软件模拟系统运行状态,评估性能。 电气原理图绘制:完成调速控制电路的电气原理图绘制。 双闭环控制策略:转速环在外,电流环在内,形成嵌套结构,提升动态响应能力。 晶闸管控制角调节:通过改变控制角α调节输出电压,实现转速平滑调节。 仿真分析:借助专业软件验证设计的合理性和有效性。 双闭环直流电机调速系统设计涉及主电路、驱动电路和控制器设计等多个环节,通过仿
《编译原理》是计算机科学中一门极为重要的课程,主要探讨如何将高级程序设计语言转换成机器可执行的指令。清华大学的张素琴教授在这一领域有着深厚的学术造诣,其编译原理课后习题答案对于学习者而言是非常珍贵的资源。这份压缩文件详细解析了课程中所涉及的概念、理论和方法的实践应用,目的是帮助学生更好地理解编译器设计的核心内容。 编译原理的核心知识点主要包括以下几点: 词法分析:作为编译过程的首要环节,词法分析器会扫描源代码,识别出一个个称为“标记”(Token)的最小语法单位。通常借助正则表达式来定义各种标记的模式。 语法分析:基于词法分析产生的标记流,语法分析器依据文法规则构建语法树。上下文无关文法(CFG)是编译器设计中常用的一种形式化工具。 语义分析:这一步骤用于理解程序的意义,确保程序符合语言的语义规则。语义分析可分为静态语义分析和动态语义分析,前者主要检查类型匹配、变量声明等内容,后者则关注运行时的行为。 中间代码生成:编译器通常会生成一种高级的中间表示,如三地址码或抽象语法树,以便于后续的优化和目标代码生成。 代码优化:通过消除冗余计算、改进数据布局等方式提升程序的执行效率,同时不改变程序的语义。 目标代码生成:根据中间代码生成特定机器架构的目标代码,这一阶段需要考虑指令集体系结构、寄存器分配、跳转优化等问题。 链接:将编译后的模块进行合并,解决外部引用,最终形成一个可执行文件。 错误处理:在词法分析、语法分析和语义分析过程中,编译器需要能够检测并报告错误,例如语法错误、类型错误等。 张素琴教授的课后习题答案覆盖了上述所有核心知识点,并可能包含实际编程练习,比如实现简单的编译器或解释器,以及针对特定问题的解题策略。通过解答这些习题,学生可以加深对编译原理的理解,提升解决问题的能力,为今后参与编译器开发或软件工程实践奠定坚实的基础。这份资源不仅是学习编译原理的有力辅助材料,也是
内容概要:本文介绍了一种基于环形展开架构的全异步7位逐次逼近寄存器(SAR)模数转换器(ADC),其采样速率为1.75 GS/s,采用3纳米CMOS工艺制造。为了降低功耗并减少设计复杂度,提出了一种无存储器的全异步SAR架构,并引入了双尾反馈(DTFB)动态比较器来满足所需速度并最小化热噪声。该ADC实现了37/49 dB的信噪比(SNDR)/无杂散动态范围(SFDR),面积为0.00055平方毫米,功耗仅为0.69毫瓦。此外,它具有最佳的Walden品质因数(FoMw)为6.9 fJ/转换步长,适用于224 Gb/s PAM4 SerDes接收器中的64路时间交织(TI) ADC系统。 适合人群:从事高速模拟电路设计、SerDes接口开发以及对高精度ADC有研究兴趣的专业人士和研究人员。 使用场景及目标:①适用于需要高带宽、低延迟和低功耗的数据中心网络通信设备;②支持大规模时间交织ADC阵列应用,如高速光纤通信系统;③优化ADC性能,特别是针对PAM4信号处理和高速数据传输的应用。 其他说明:本文详细介绍了ADC的关键技术细节,包括但不限于环形展开SAR架构、DTFB比较器设计、门控提升采样保持开关以及各种校准机制。此外,还展示了实测结果并与现有先进技术进行了对比,证明了所提出的ADC在性能和能效方面的优势。该设计方案不仅在单通道ADC中表现出色,在多通道应用场景下同样具备显著的竞争优势。
朴素贝叶斯分类器是一种基于概率理论的机器学习算法,广泛应用于数据挖掘、自然语言处理等领域。它基于贝叶斯定理,并假设特征之间相互独立,这也是其“朴素”之称的由来。本教程将详细介绍如何在Python中实现朴素贝叶斯分类器。 朴素贝叶斯分类器的核心是贝叶斯定理。通过计算给定特征条件下各个类别的后验概率,并选择后验概率最高的类别作为预测结果。在实际应用中,通常采用极大似然估计来确定先验概率和条件概率。 在Python中,可以使用sklearn库中的NaiveBayes类来实现朴素贝叶斯分类器。以下是实现的基本步骤: 导入必要的库: 准备数据集: 假设数据存储在一个CSV文件中,包含特征列和目标列。可以使用pandas库读取数据: 划分训练集和测试集: 选择合适的朴素贝叶斯分类器: 对于连续数值型数据,通常使用高斯朴素贝叶斯(GaussianNB); 对于计数数据(如文本中的词频),可以选择多项式朴素贝叶斯(MultinomialNB); 对于二元特征,可以使用伯努利朴素贝叶斯(BernoulliNB)。 实例化分类器: 训练模型: 使用训练数据拟合模型: 预测与评估: 对测试数据进行预测并评估模型性能: 以上就是使用Python实现朴素贝叶斯分类器的完整流程。在实际项目中,可能需要进行特征缩放、特征选择等预处理步骤,以及调整模型参数以优化性能。朴素贝叶斯分类器的优点在于处理大量特征时效率高,易于理解和实现,但其假设特征独立可能会在某些复杂数据集上导致性能不佳。如果需要进一步深入学习,可以参考NaiveBayesClassifier.py文件,其中可能包含自定义分类器、特征工程、模型调优等更具体的实现细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值