牛客周赛 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET core 搭建一个跨平台的 Web Service

以前搭建的webservice 都是基于.NET fromwork的&#xff0c;我们知道.NET fromwork是非跨平台的&#xff0c;只能部署在iis上&#xff0c;今天教大家用.NET core搭建一个可跨平台的Web Service 新建一个.net core空项目 给项目起一个名字 选一个.net框架&#xff0c;我这里选…

强大的音频编辑器 Metadatics直装 for mac

Metadatics是一款Mac上的音频元数据编辑器&#xff0c;功能强大且高级。它支持批量编辑最常见的音频文件类型&#xff0c;包括MP3、M4A、AIFF、WAV、FLAC、APE、OGG、WMA等。它可以从在线资源中查找元数据&#xff0c;根据元数据重命名文件&#xff0c;或使用众多内置函数之一来…

mysqldump --set-gtid-purged参数详解

在开启了GTID模式的数据库&#xff0c;使用mysqldump进行部分数据备份的时候&#xff0c;经常会遇到如下警告 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of t…

什么是 web 组态?web 组态与传统组态的区别是什么?

组态软件是一种用于控制和监控各种设备的软件&#xff0c;也是指在自动控制系统监控层一级的软件平台和开发环境。这类软件实际上也是一种通过灵活的组态方式&#xff0c;为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。通常用于工业控制&#xff0c;自动…

你知道如何画时间轴吗?

时间轴的英文是time axis。贯穿四维空间的一条线&#xff0c;是虚数轴&#xff0c;时间轴上一段距离表示时间 。&#xff08;源自“百度百科”&#xff09; 时间轴&#xff1a;通过互联网技术&#xff0c;依据时间顺序&#xff0c;把一方面或多方面的事件串联起来&#xff0c;…

【NLP】RAG 应用中的调优策略

​ 检索增强生成应用程序的调优策略 没有一种放之四海而皆准的算法能够最好地解决所有问题。 本文通过数据科学家的视角审视检索增强生成&#xff08;RAG&#xff09;管道。它讨论了您可以尝试提高 RAG 管道性能的潜在“超参数”。与深度学习中的实验类似&#xff0c;例如&am…

Pika:AIGC新秀,视频生成产业或迎来GPT时刻

今天分享的AIGC系列深度研究报告&#xff1a;《Pika&#xff1a;AIGC新秀&#xff0c;视频生成产业或迎来GPT时刻》。 &#xff08;报告出品方&#xff1a;中泰证券&#xff09; 报告共计&#xff1a;11页 Pika&#xff1a;专注Text to Video生成场景&#xff0c;支持3D和动漫…

[ESXi 5/6/7/8]设置 ESXi DCUI 欢迎消息

目录 1. ESXi默认设置2. 设置欢迎消息 MOTD2.1 使用GUI设置2.2 使用 ESXCLI 命令设置使用 esxcli 移除欢迎消息 参考资料 配置在 ESXi 直接控制台用户界面 (DCUI) 中显示的欢迎消息&#xff0c;并验证配置是否处于只读模式 Annotations.WelcomeMessage 是ESXi的高级系统设置&am…

推介几个我装机必备的实用Linux工具

最近在装Ubuntu双系统&#xff0c;不知不觉这些装机必备的神级轮子使用这么多年了&#xff0c;大大提高效率&#xff0c;也同样推介给你们&#xff0c;一起看看吧 插播&#xff0c;更多文字总结指南实用工具科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】 thefuck …

零基础自学Python的最全时间规划表

文章目录 前言第一阶段:熟悉Python第二阶段:软件开发第三阶段:成为程序员关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python…

消息队列kafka详解:Kafka架构介绍

一. 工作流程 Kafka中消息是以topic进行分类的&#xff0c;Producer生产消息&#xff0c;Consumer消费消息&#xff0c;都是面向topic的。 Topic是逻辑上的改变&#xff0c;Partition是物理上的概念&#xff0c;每个Partition对应着一个log文件&#xff0c;该log文件中存储的就…

SAP ABAP excel文件模板上传下载

一&#xff1a;事物码smw0 二&#xff1a;上传步骤 程序源码&#xff1a; l_filename XX.xls.l_muban z123. *&---下载模板PERFORM frm_get_fullpath CHANGING gv_fullpath gv_path gv_name. *&---路径为空则退出IF gv_fullpath IS INITIAL.MESSAGE 用户取消操作 T…