河南萌新联赛2024第(一)场:河南农业大学(部分题解)

A 造数

题目链接

题意:

给一个整数n,求出最少的操作数使0转化为n
有三种操作方式:

  1. +1
  2. +2
  3. *2

解题思路:

我们可以将基础的1,2,3分别需要1,1,2次操作,
当n大于3时,若n为偶数,则将n=n/2,如果n为奇数,则将操作数加一,n=(n-1)/2
,循环进行直到n小于等于3时,加上相应的基础操作数,即可得到操作次数

解题代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int a[10000];
signed main()
{IOS
//	int t;
//	cin>>t;
//	while(t--)
//	{int n,t=0,p=0;cin>>n;a[1]=1;a[2]=1;a[3]=2;if(n==0)cout<<"0"<<endl;else if(n<=3)cout<<a[n]<<endl;else{while(n>3){if(n%2==1)p++;n=n/2;t++;}cout<<t+a[n]+p<<endl;}
//	}return 0;
}

F 两难抉择新编

题目链接

题意:

给出长度为n的数组a,你可以在下列两项操作中选择一种进行最多一次操作:
操作1:
选择一个数i,使得a[i]=a[i]+x,x为[1,⌊n/i⌋] 范围内任意正整数( ⌊⌋ 表示向下取整 )
操作2:
选择一个数i,使得a[i]=a[i]*x,x为[1,⌊n/i⌋] 范围内任意正整数( ⌊⌋ 表示向下取整 )
求出操作后最大的数组异或和.

解题思路:

异或有自反性:A ^B ^B=A
在这个数组中。我们可以先将数组全部异或
然后遍历,在遍历到一个元素时,应用其自反性,先对其异或,然后将该元素中每一个可以出现的数分别异或,取最大值

解题代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int a[200010];
signed main()
{IOSint n,sum=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];sum=sum^a[i];}int t=0;for(int i=1;i<=n;i++){for(int j=1;j<=n/i;j++){t=max(t,sum^a[i]^(a[i]+j));t=max(t,sum^a[i]^(a[i]*j));}} cout<<t<<endl;return 0;
}

G 旅途的终点

题目链接

题意:

地面上有n个国家,去每个国家都需要消耗a[i]点生命力使其恢复太平,以便畅游,但你具有k次释放神力的机会,在旅行中你有m点生命力,用完则不可继续畅游国家,
注:在当前国家消耗完生命力则意味着你并没有畅游该国家。

解题思路:

这是一道返回贪心的题,我们先将前k个国家用神力畅游,放入优先队列
当畅游第i个国家,i>k时,我们将队列中需要消耗最小生命力的改为消耗生命力,使sum++,将其弹出队列,第i个国家来使用神力,并且将其推进队列
当sum>=m时,我们则不可用生命力畅游队列中的国家,只能用神力,因此我们不能继续用神力畅游第i个国家,最后i-1即为可畅游的国家
如果sum一直小于m。则证明可以畅游n个国家,输出n即可

解题代码:

#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
typedef long long ll;
ll a[200010];
priority_queue<ll,vector<ll>,greater<ll> >q;
int main()
{IOSll n,m,k,r=0;cin>>n>>m>>k;for(int i=1;i<=n;i++){cin>>a[i];}ll sum=0;for(int i=1;i<=n;i++){q.push(a[i]);if(q.size()>k){sum+=q.top();q.pop();}if(sum>=m){cout<<i-1<<endl; r=1;break;}}if(r==0)cout<<n<<endl;return 0;
}

H 两难抉择

题目链接

题意:

给出长度为n的数组a,你可以在下列两项操作中选择一种进行最多一次操作:
操作1:
选择一个数i,使得a[i]=a[i]+x,x为[1,n]范围内任意正整数
操作2:
选择一个数i,使得a[i]=a[i]*x,x为[1,n]范围内任意正整数
求出操作后最大的数组总和.

解题思路:

想要得到最大的数组总和,应该让数组中最大的值max进行操作
无论哪个操作,x的值取得越大,操作后数组总和越大,所以x应取n,
然后将max分别进行操作1,2,取操作后较大值,最后计算出数组总和即可。

解题代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int a[200010];
signed main()
{IOSint n;cin>>n;int max=-1,sum=0;for(int i=0;i<n;i++){cin>>a[i];if(a[i]>max)max=a[i];sum=sum+a[i];}int sum2=sum+n;sum=sum-max+max*n;if(sum<sum2)sum=sum2;cout<<sum<<endl;return 0;
}

I 除法移位

题目链接

题意:

有长度为n的数组a,我们可以对数组进行循环右移操作:

一次循环操作会使数组a[1],a[2],a[3]…a[n]变为a[n],a[1],a[2]…a[n-1]

式子s=a[1]/a[2]/a[3]…/a[n],求出在t次操作的范围内,使s值最大的最小操作数。

解题思路:

s的值为a[1]/(a[2]* a[3] *…*a[n]),要使s值最大,应让分子即数组第一个数尽量大
由于有最大操作数限制,所以只有操作t>=n-1时,我们可以取整个数组的最大值
当t<n-1时,我们应该取下标为n-t+1到n的最大值,由于这个操作是从最后移动,所以当有多个最大值时,应该取数组中靠后的那一个
如果最初的数组的首元素也为最大值,则无需进行操作,即操作数为0

解题代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int a[200010];
signed main()
{IOSint n,m,r;cin>>n>>m;if(m>=n)r=1;elser=n-m+1;int ma=0;int t;for(int i=1;i<=n;i++){cin>>a[i];if(i>=r){if(a[i]>=ma){ma=a[i];t=i;}}}if(a[1]>=ma)t=1;if(t==1)cout<<0<<endl;elsecout<<n-t+1<<endl;return 0;
}

K 图上计数(Easy)

题目链接

题意:

图中有n个顶点,m条边,可以进行无数次删除操作来删除任意条边以获得若干个联通块。

定义联通块的大小为其所包含点个数。
定义这个图的代价是:你有任意次操作,每次操作合并两个联通块,合并后联通块大小为二者之和,最后剩下两个联通块大小的乘积为此图的代价,若只有一个则代价为0。你需要最大化此图代价。

解题思路:

代价为两个两个连通块大小的乘积,连通块的大小即为顶点数
因此,我们只需将顶点分为两部分,然后使得两部分乘积最大
要使一个数n分为两部分使得乘积最大,则两个值分别为n/2, n-(n/2)

解题代码:

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
signed main()
{IOSint n,m;cin>>n>>m;int p=n/2;int q=n-p;cout<<p*q<<endl;return 0;
}

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

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

相关文章

仅两家!云原生向量数据库 PieCloudVector 全项通过信通院「可信数据库」评测

7月16日&#xff0c;2024 可信数据库发展大会在北京隆重举行。大会以“自主、创新、引领”为主题&#xff0c;近百位数据库领域的专家、学者齐聚一堂&#xff0c;带来高质量的数据库技术洞察与实战经验。 本次可信数据库发展大会中&#xff0c;中国信通院正式公布 2024 年上半年…

紫光展锐5G安卓核心板T760__国产手机芯片方案

展锐T760安卓核心板是具备续航和性能更加均衡的5G移动平台。其主要特点包括主流的6400万像素摄像头和高达120Hz的刷新率。 平台采用多模融合的创新架构和AI智能调节技术&#xff0c;从而在5G数据场景下降低了37%的整体功耗&#xff0c;在5G待机场景下降低了18%的整体功耗。 多…

gin框架 POST 请求参数绑定 JSON数据ShouldBind 使用注意事项 - 结构体必须定义json标签

gin框架中的请求数据绑定ShouldBind可将前端发送的数据直接绑定到自定义结构体&#xff0c; 但是在POST发送JSON 数据时 需要注意 因为gin框架在底层绑定数据时使用了json对参数进行了反序列化&#xff0c; 所以我们在自定义的结构体中&#xff0c;如果前端发送的JSON中的字段和…

直播架构如何设计核心节点和边缘节点

在直播架构中&#xff0c;核心节点和边缘节点的分工及主要服务是确保直播服务稳定、高效和可扩展的关键。以下是对这些节点的详细描述&#xff1a; 核心节点 核心节点通常位于数据中心&#xff0c;负责处理直播的主要逻辑和数据处理。其主要服务包括&#xff1a; 直播管理后…

Redis常见阻塞原因

1、命令阻塞 使用时间复杂度O&#xff08;n&#xff09;的不当命令造成全表扫描&#xff0c;导致阻塞 如 keys * 获取所有key 2、RDB持久化save阻塞 Redis提供两个命令来生成RDB快照文件&#xff1a; 1、save&#xff1a;主线程阻塞&#xff0c;写完RDB才放行 2、bgsave : …

qml 实现一个listview

主要通过qml实现listvie功能&#xff0c;主要包括右键菜单&#xff0c;滚动条&#xff0c;拖动改变内容等&#xff0c;c 与 qml之间的变量和函数的调用。 main.cpp #include <QQuickItem> #include <QQmlContext> #include "testlistmodel.h" int main…

js vue axios post 数组请求参数获取转换, 后端go参数解析(gin框架)全流程示例

今天介绍的是前后端分离系统中的请求参数 数组参数的生成&#xff0c;api请求发送&#xff0c;到后端请求参数接收的全过程示例。 为何会有这个文章&#xff1a;后端同一个API接口同时处理单条或者多条数据&#xff0c;这样就要求我们在前端发送请求参数的时候需要统一将请…

C/C++ xml库

文章目录 一、介绍1.1 xml 介绍1.2 xml 标准1.3 xml 教程1.4 xml 构成 二、C/C xml 库选型2.1 选型范围2.2 RapidXML2.3 tinyxml22.4 pugixml2.5 libxml 五、性能比较5.1 C xml 相关的操作有哪些5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较 六、其他问题6.1 version和 e…

网络编程-TCP 协议的三次握手和四次挥手做了什么

TCP 协议概述 1. TCP 协议简介 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP 协议提供可靠的通信服务&#xff0c;通过校验和、序列号、确认应答、重传等机制保证数据传输…

MYSQL——库表操作

MYSQL——库表操作 1.1 SQL语句基础1.1.1. SQL简介1.1.2. SQL语句分类1.1.3. SQL语句的书写规范 1.2数据库的操作1.2.1 数据库的登录及退出1.2.2查看数据库 作业 1.1 SQL语句基础 1.1.1. SQL简介 SQL:结构化查询语言(Structured Query Language)&#xff0c;在关系型数据库上…

【ffmpeg入门】安装CUDA并使用gpu加速

文章目录 前言CUDACUDA是什么CUDA 的主要组成部分CUDA 的优点CUDA 的基本编程模型安装CUDA ffmpeg使用gpu加速为什么需要使用gpu加速1. 提高处理速度2. 减少 CPU 负载3. 提高实时处理能力4. 支持高分辨率和复杂编码格式5. 提供更好的可扩展性6. 提高能效 ffmpeg使用gpu加速常用…

Python中使用SpeechLib实现文本转换语音朗读的示例(修正bug)

一、修正SpeechLib的导入包顺序后的代码&#xff1a; from comtypes.client import CreateObjectengine CreateObject(SAPI.SpVoice) stream CreateObject(SAPI.SpFileStream)from comtypes.gen import SpeechLibinfile E:\\语音文档\\易经64卦读音.txt outfile E:\\demo.…

Selenium - 设置元素等待及加载策略

7月18日资源分享&#xff1a; 耿直哥三部曲全——机器学习&#xff0c;强化学习&#xff0c;深度学习 链接: https://pan.baidu.com/s/1c_eVVeqCZmB6zszHt6ZXiw?pwdtf2a 在使用Selenium进行网页自动化测试时&#xff0c;一个常见的问题是页面加载速度和元素的可见性问题。…

【CMU博士论文】结构化推理增强大语言模型(Part 0)

问题 &#xff1a;语言生成和推理领域的快速发展得益于围绕大型语言模型的用户友好库的普及。这些解决方案通常依赖于Seq2Seq范式&#xff0c;将所有问题视为文本到文本的转换。尽管这种方法方便&#xff0c;但在实际部署中存在局限性&#xff1a;处理复杂问题时的脆弱性、缺乏…

单片机主控的基本电路

论文 1.复位电路 2.启动模式设置接口 3.VBAT供电接口 4.MCU 基本电路 5.参考电压选择端口

python处理彩色图像通道拆分与合并

彩色图像通道拆分与合并 1. 使用 opencv2. 使用 numpy 待处理图像 ML.jpg 1. 使用 opencv import cv2 import matplotlib.pyplot as plt import numpy as np # 读取图像 # 读取图像 image cv2.imread(ML.jpg) plt.imshow(image) print(type(image)) # 输出&#xff1a;<…

Artix7系列FPGA实现SDI视频编解码+UDP以太网传输,基于GTP高速接口,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的以太网方案本博已有的FPGA图像缩放方案本方案的缩放应用本方案在Xilinx--Kintex系列FPGA上的应用本方案在Xilinx--Zynq系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡…

【BUG】已解决: KeyboardInterrupt

已解决&#xff1a; KeyboardInterrupt 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社区主理人 擅长.net、C…

vue v-for展示元素分两栏 中间使用分割线

1.效果展示: 2.代码展示: <template><div class"container"><div class"column" v-for"(item, index) in items" :key"index"><div class"item">{{ item }}</div><div v-if"index %…

注册安全分析报告:东方航空

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …