牛客周赛 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.mzph.cn/news/216028.shtml

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

相关文章

MyBatisPlus简介

1 简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 2、特性 无侵入 只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑…

bootstrap:下拉菜单

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>下拉菜单DEMO</title> <link rel"stylesheet" type"text/css" href"/cdn.bootcss.com/bootstrap/3.3.2/css/bootstrap.min.css"…

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

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

算法设计复习题

一、选择 1.算法要对异常情况进行适当的处理&#xff0c;就是算法的&#xff08;&#xff09;。 A、正确性 B、可用性 C、健壮性 D、可行性 2.&#xff08; &#xff09;指的是算法中描述的操作都可以通过已经实现的基本操作运算有限次实现。 A、可靠性 B、正确性 C、有效性 …

windows下docker环境安装

开启硬件虚拟化技术 win10中开启 Hyper-V Win10 下是否开启硬件虚拟化技术&#xff0c;在控制面板&#xff0c;启用 window 功能&#xff0c;找到 Hyper-V 选项&#xff0c;点勾选确认。如图&#xff1a; Windows 11 家庭中文版新增 Hyper-V选项 注意以下的解决方案来自win1…

FFmpeg之AVHWAccel

这也是ffmpeg解码器中比较重要的一个模块&#xff0c;很多人认识它应该是通过一条命令 ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -c:v h264_nvenc -b:v 5M output.mp4命令地址&#xff1a;英伟达ffmpeg 大家可能觉得这就是nvcodec了&#xff0c;后来发…

PS不按比例裁剪图片

点击左侧的裁剪工具后&#xff0c;然后点击底部工具栏中的清除选项。

【docker】容器使用(Nginx 示例)

查看 Docker 客户端命令选项 docker上面这三张图都是 常用命令&#xff1a; run 从映像创建并运行新容器exec 在运行的容器中执行命令ps 列出容器build 从Dockerfile构建映像pull 从注册表下载图像push 将图像上载到注册表…

【51单片机】俄罗斯方块游戏-LED点阵

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用51单片机控制器&#xff0c;使88LED点阵&#xff0c;按键等。 主要功能&#xff1a; 系统运行后&#xff0c;88LED点阵显示游戏界面&#xff0c;K1和K2键控制左右移动&#xff0c;K3和K4键控制…

【产品经理】产品的实现,需要做好战略规划

产品的实现需要做好产品规划&#xff0c;而产品的规划决定了产品的方向。本文从战略规划的重要性、产品定位、设计产品架构图三个方向&#xff0c;详细地为大家梳理了产品实现的前期准备。 我们知晓了如何去发掘问题&#xff0c;并找到解决方案。 可对于问题的处理&#xff0c…

Qt Desktop Widgets 控件绘图原理逐步分析拆解

Qt 是目前C语言首选的框架库。之所以称为框架库而不单单是GUI库&#xff0c;是因为Qt提供了远远超过GUI的功能封装&#xff0c;即使不使用GUI的后台服务&#xff0c;也可以用Qt大大提高跨平台的能力。 仅就界面来说&#xff0c;Qt 保持各个平台绘图等效果的统一&#xff0c;并…

diffusers pipeline拆解:理解pipelines、models和schedulers

diffusers pipeline拆解&#xff1a;理解pipelines、models和schedulers 翻译自&#xff1a;https://huggingface.co/docs/diffusers/using-diffusers/write_own_pipeline v0.24.0 diffusers 设计初衷就是作为一个简单且易用的工具包&#xff0c;来帮助你在自己的使用场景中构建…

ftp传海量文件会卡?跨境数据传输推荐使用FTP吗?

企业在传输大量文件时&#xff0c;经常会遇到FTP卡顿的问题&#xff0c;尽管采取多种方式仍无法完美解决&#xff0c;尤其是在跨境数据传输方面。对于紧急项目而言&#xff0c;文件数据无法及时同步可能导致任务无法按时完成。在传输速度方面&#xff0c;甚至可能出现每秒几KB的…

Jmeter入门

一、下载jmeter 官网下载 下载之后解压&#xff0c;在目录/bin下面找到jmeter.bat双击之后即可启动Jmeter。 二、使用 如下左图&#xff0c;选择语言为中文&#xff0c;可以修改测试计划的名称。如下右图&#xff0c;添加线程组 添加线程组 添加http请求 路径传参方式 …

Morphisec革命:利用移动目标防御增强Windows安全性

来源&#xff1a;艾特保IT 虹科分享 | Morphisec革命&#xff1a;利用移动目标防御增强Windows安全性 原文链接&#xff1a;虹科分享 | Morphisec革命&#xff1a;利用移动目标防御增强Windows安全性 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; Windows 10安全工…

js中分号产生的问题详解,第一次出现分号导致的问题的记录

图示: 现在 这段代码本来是两行,但是格式化后注意下面一行缩进了,代表按一行解析了, 结果: 加上分号后再格式化就自动对齐了,代表按两行解析. 要是按照没有分号进行解析是怎样的? GPT回答: 这段代码是一行 JavaScript 代码&#xff0c;涉及到了 JSON 对象、条件语句和跳转页面…

深入理解RBAC权限系统

最近&#xff0c;一位朋友在面试中被问及如何设计一个权限系统。我们注意到目前许多后台管理系统&#xff08;包括一些热门的如若依快速开发平台&#xff09;都采用了RBAC访问控制策略。该策略通过将权限授予角色&#xff0c;然后将角色分配给用户&#xff0c;从而实现对系统资…

推荐一个FL Studio最适配的midi键盘?

Hello大家好&#xff01;好消息&#xff01;好消息&#xff01;特大好消息&#xff01; 水果党们&#xff01;终于有属于自己的专用MIDI键盘啦&#xff01; 万众期待的Novation FLKEY系列 正式出炉&#xff01; 做编曲和音乐制作的朋友们&#xff0c;对水果软件FLSTUDIO应该…

mysql开启查询日志

mysql默认不开启查询日志&#xff0c;可以通过命令查询 show VARIABLES LIKE general%; 开启查询日志&#xff0c;并更改日志存放目录&#xff0c;不过存放的目录一定要有权限不然会报错 手动创建一下log目录下的mysql目录并赋予权限 mkdir /var/log/mysql chown -R mysql:m…

在vue3的js中将一组数据赋值的问题

代码: if (res.data) { myPrizeList.value res.data console.log(myPrizeList.value,myPrizeList.value) const giftList ref() console.log(JSON.parse(JSON.stringify(myPrizeList.val…