牛客周赛 Round 22(C、D题解)

C、小红的数组构造(思维)

一、题目要求

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

题目描述

小红想让你构造一个长度为 n 的数组,满足以下三个条件:
1. 该数组最大值不超过 k。
2. 该数组所有数都不相同。
3. 数组所有数之和等于 x。

输入描述:

输入一行三个正整数 n,k,x,用空格隔开。
1≤n≤10^5
1≤k≤x≤10^14

输出描述:

如果无法构造,请输出-1。
否则输出 n 个正整数,用空格隔开,代表构造的数组。有多解时输出任意即可。

示例1

输入

4 6 15

输出

1 3 6 5

示例2

输入

2 2 2

输出

-1

说明

显然无法构造出两个不相等的正整数和为2。

二、思路

1.先初始化数组

for(i=1;i<=n;i++)
   a[i]=i;
   x=x-i;

2.判断

(1)当有n个不同的数的时候,此时若从1开始,则最大值为n,当n比给定的k要大的时候则不符合条件

(2)当x<0的时候,则说明(1+n)*n/2 大于x,也不符合条件

3.倒着循环找差值,并将差值加到相应的数组中

4.如果经过3操作后,x等于0,则说明新创造的数组符合条件,当x!=0的时候,则说明不符合条件。

三、代码

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
const int N=2e5+10;
const int inf=0x3f3f3f3f;
int n,k,x;
int a[N];
void solve()
{
	cin>>n>>k>>x;
	int i,j;
	for(i=1;i<=n;i++)
	{
		a[i]=i;
		x=x-i;
	}
	if(x<0||n>k)
	{
		cout<<"-1"<<endl;
		return;
	}
	for(i=n;i>=1;i--)
	{
		int y=min(x,k-a[i]);
		if(y<0)
		   y=0;
		x-=y;
		a[i]+=y;
		k=a[i]-1;
	}
	if(x!=0)
	{
		cout<<"-1"<<endl;
		return ;
	}
	for(i=1;i<=n;i++)
	{
		cout<<a[i]<<' '; 
	}
	cout<<endl;
}
signed main()
{
	IOS;
    int t=1;
    while(t--)
    {
       solve();
    }
    return 0;
}

D、小红的图上删边(并查集)

一、题目要求

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

题目描述

小红拿到了一个n个节点、m条边的无向连通图,每个节点的权值已知。
小红删掉一条边时,可以获得连接该边的两个节点“权值乘积末尾0数量”的价值。例如,一条边连接的两个点权值是50和60,那么小红删掉这条边获得的价值为3。
小红想知道,在保证这张图连通的情况下,最多可以通过删边获得多少价值?

输入描述:

第一行输入两个正整数 n 和 m,代表图的点数和边数。
第二行输入 n个正整数 aii,代表每个点的权值。
接下来的 m 行,每行输入两个正整数 u 和 v,代表点 u 和点 v 有一条边连接。
保证图连通,且无重边,无自环。
2≤n≤10^5
n−1≤m≤min(10^5,n∗(n−1)2)
1≤ai≤10^14
1≤u,v≤n

输出描述:

一个整数,代表删边可以获得的最大价值。

示例1

输入

3 3
5 8 25
1 2
2 3
1 3

输出

2

说明

删掉第二条边,由于8*25=200,末尾有2个零,所以可以获得2的价值。

二、思路

1.创建结构体u,v,w;
即:从u到v的权值为w
2.利用while()求出2的个数和5的个数,取两者最小值,则为w的值;
累加所有w的值则为cnt; 
3. 对结构体里面的w从小到大排序,初始化并查集,利用find()函数,
在合并的过程中,累加w的值为s,当合并的个数为n-1的时候,跳出即可
4.则通过删边,获得的最大价值为 cnt-s 

三、代码

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
const int N=2e5+10;
const int inf=0x3f3f3f3f;
int n,m;
int fa[N],a[N];
struct node
{
	int  u,v,w;
}q[N];
bool cmp(node l,node r)
{
	return l.w<r.w;
}
int find(int x)
{
	if(fa[x]==x)
	    return x;
	return fa[x]=find(fa[x]);
} 
void solve()
{
	cin>>n>>m;
	int i,j;
	int cnt=0;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(i=1;i<=m;i++)
	{
		cin>>q[i].u>>q[i].v;
		int sum1=0,sum2=0;
		int cc=a[q[i].u];
		while(cc%2==0) sum1++,cc/=2;
		while(cc%5==0) sum2++,cc/=5;
		int bb=a[q[i].v];
		while(bb%2==0) sum1++,bb/=2;
		while(bb%5==0) sum2++,bb/=5;
		q[i].w=min(sum1,sum2);//取2和5个数的最小值,即0的个数 
		cnt+=q[i].w;
	}
	sort(q+1,q+m+1,cmp);
	for(i=1;i<=n;i++)//并查集:初始化 
	{
		fa[i]=i;
	} 
	int cntt=0,s=0;
	for(i=1;i<=m;i++)
	{
		if(find(q[i].u)!=find(q[i].v))
		{
			fa[find(q[i].u)]=find(q[i].v);
			s+=q[i].w;
			cntt++;
		}
		if(cntt==n-1)
		   break;
	} 
	cout<<cnt-s<<endl;
}
signed main()
{
    int t=1;
    while(t--)
    {
       solve();
    }
    return 0;
}

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

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

相关文章

adb命令学习记录

1、 adb ( android debug bridge)安卓调试桥&#xff0c;用于完成电脑和手机之间的通信控制。 xcode来完成对于ios设备的操控&#xff0c;前提是有个mac电脑。 安卓系统是基于linux内核来进行开发的。 2、adb的安装: 本身 adb是 android SDK 其中自带的工具&#xff0c;用于完…

项目必备手册-项目计划书

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件全资料获取&#xff1a;点我获取

充分发挥SQL能力之数列

SQL数列 1、数列概述2、SQL数列2.1、简单递增序列2.2、等差数列2.3、等比数列3、SQL数列的应用3.1、连续问题3.2、多维分析1、数列概述 数列是最常见的数据形式之一,实际数据开发场景中遇到的基本都是有限数列。常见的数列例如:简单递增序列、等差数列、等比数列等 如何充分…

(新手必看)自定义数据传输通信协议+STM32代码详解

前言 本篇博客主要学习和了解一些单片机协议的格式&#xff0c;在对传输大数据或者要求准确性的时候&#xff0c;都需要通过协议来发送接收&#xff0c;下面通过了解协议的基本构成和代码来分析和实现协议的发送和接收。本篇博客大部分是自己收集和整理&#xff0c;如有侵权请联…

yolov8 onnx推理

前言&#xff1a;yolov8的后处理在某些情况下会导致转模型失败&#xff0c;因此需要把后处理剥离出来。 代码需要做如下修改&#xff1a; 改完后&#xff0c;网络会有三个输出&#xff0c;如图&#xff1a; 最后&#xff0c;用python写网络的后处理&#xff1a; import onn…

用心研发好产品:健康品牌podeey是如何做到的?

在分析消费者健康需求的同时&#xff0c;美国podeey能量生命有限公司&#xff08;PODEEY Biotechnology LLC.&#xff09;不断提升自主研发实力&#xff0c;并且一直注重汇集全球前沿的研发力量&#xff0c;与贵州宏臻菌业达成战略合作&#xff0c;始终致力于以科学技术为核心&…

软件测试HR总结的软件测试常见面试题

一、测试流程是什么样的&#xff1f; 1.产品确定需求后&#xff0c;邀请项目经理&#xff0c;开发&#xff0c;测试等人员参加需求评审会&#xff1b; 2.评审结束后开发根据需求文档和接口文档开发&#xff0c;测试制定测试计划和编写手工测试用例&#xff0c;测试脑图&#xf…

【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)

在文章【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手中我们介绍了Redis常用的10大数据类型&#xff0c;这10大数据类型可并不是直接在底层通过代码实现的&#xff0c;而是通过不同的底层数据结构组合起来的&#xff0c;这篇我们介绍下Redis常用数据类型…

【LeetCode】每日一题 2023_12_12 下一个更大元素 IV(堆,优先级队列/单调栈)

文章目录 刷题前唠嗑题目&#xff1a;下一个更大元素 IV题目描述代码与解题思路 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 时隔两天&#xff0c;LeetCode 每日一题重新开张&#xff0c;流感已经不能阻挡我的脚步了&#xff01; 题目&#x…

乐小鱼大理之行

在一个晴朗的日子里&#xff0c;乐小鱼和她的家人一起踏上了一场梦幻般的大理之行。他们驱车穿越沧山&#xff0c;眼前豁然开朗&#xff0c;洱海在阳光下泛着碧绿的光芒。 乐小鱼好奇地探出头&#xff0c;看到了连绵的山脉和湛蓝的湖水。她兴奋地说&#xff1a;“哇&#xff0…

【C++】类与对象(下)

本文目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性 3. 友元3.1 友元函数3.2 友元类 4. 内部类5. 匿名对象6. 拷贝对象时的一些编译器优化7. 再次理解类和对象 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&am…

C++中的reverse函数

1.实现反转数组。 //头文件 #include <algorithm> //使用方法 reverse(a, an);//n为数组中的元素个数 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int main() {int a[100];int n,k;cin >> n >> k; …

QT 入门

目录 QT 概述 QT5安装 QT环境介绍 编写第一个QT的程序 QT项目文件介绍 QT 概述 QT简介 QT是一个跨平台的C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 QT的发…

欣赏动态之美,不如欣赏C语言实现动态内存管理之美 ! ! !

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 &#xff01;&#xff0…

【WinRAR】为什么右键没有压缩选项?

我们安装了WinRAR之后想要压缩文件&#xff0c;但是右键点击文件之后发现并没有WinRAR压缩选项&#xff0c;这应该如何设置才能出现右键带有压缩选项呢&#xff1f;方法如下&#xff1a; 首先打开WinRAR&#xff0c;在上面功能中点击选项 – 设置 然后我们在设置界面中切换到集…

数据结构:栈(Stack)的各种操作(入栈,出栈,判断栈非空,判断栈已满,附源码)

前言&#xff1a;在前面的文章中&#xff0c;我们讲解了顺序表&#xff0c;单链表&#xff0c;双向链表。而我们今天要分享的栈则是基于之前的数据结构上搭建的&#xff0c;但是相较于顺序表和链表来说&#xff0c;栈的实现就非常简单了。 目录 一.栈(Stack)的概念 二.栈的数…

html创建电子邮件链接

refer: 可以在a标签里使用&#xff1a; <a href"mailto:nameemail.com">Email</a>

大模型元年压轴盛会定档12月28日,第十届WAVE SUMMIT即将启航

回望2023年&#xff0c;大语言模型或许将是科技史上最浓墨重彩的一笔。从技术、产业到生态&#xff0c;大语言模型在突飞猛进中加速重构万物。随着理解、生成、逻辑、记忆四大能力显著提升&#xff0c;大语言模型为通用人工智能带来曙光。 AI开发者们正在用算法和代码书写一个…

ABB直流调速器维修DCS550 DCS400 DCS402.0200

德国ABB维修包括&#xff1a;直流调速器维修&#xff0c;伺服驱动器维修&#xff0c;变频器维修&#xff0c;伺服放大器维修&#xff0c;工控机维修&#xff0c;触摸屏维修 ABB直流调速器故障分析: 1、脱扣电流变压器过热引起的直流电机。 发现问题的根源在夏季常见或室内条…

聊天记录年度报告一览无余:轻松多格式导出永久保存,深度智能分析

聊天记录年度报告一览无余&#xff1a;轻松多格式导出永久保存&#xff0c;深度智能分析 1.功能简介效果展示 一个用于提取微信聊天记录的工具&#xff0c;支持将聊天记录导出成HTML、Word、CSV文档&#xff0c;以实现永久保存。此外&#xff0c;该工具还具有对聊天记录进行分…