C++牛客周赛43题目分享(3)小红平分糖果,小红的完全平方数,小苯的字符串变化,小红的子数组排列判断

目录

​编辑

1.前言

2.四道题目

2.1小红平分糖果

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

2.2小红的完全平方数

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

2.3小苯的字符串变化

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

2.4小红的子数组排列判断

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

3.小结


1.前言

哈喽大家好啊,就在刚刚的周日,结束了牛客周赛 Round 43,今天继续为大家分享一些题解,希望对大家有所帮助,也请大家多多支持我哦~

2.四道题目

2.1小红平分糖果

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;int main(){int n=0;scanf("%d",&n);if(n%2==0)printf("%d %d",n/2,n/2);else printf("-1");return 0;
} 

第一道题就是一道简单的签到题,认真审题就没有问题~ 

2.2小红的完全平方数

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;void func()
{long long x;cin>>x;long long l=sqrt(x);long long r=l+1;if((x-l*l)%2==0)cout<<(x-l*l)/2;else cout<<(r*r-x)/2;}
int main()
{func();return 0;
}

第二道题考了一道有关完全平方数的问题:

在解决这道题之前,我们需要先明白完全平方数的一个性质,每一个完全平方数都是由连续的自然数平方得出,由于自然数的顺序是奇数偶数交错,且奇数乘以奇数仍未奇数,偶数乘以偶数仍未偶数,因此,每一个完全平方数也是奇数偶数相交错


在知晓这一个性质之后就可以开始敲代码了,先寻找输入的这个数在哪俩个相邻的完全平方数之间,然后寻找该数离哪一个完全平方数的距离是偶数,最后输出即可。

以上代码中是直接打印出了模拟出来的结果,可以先自己在演草本上写写。

2.3小苯的字符串变化

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;const int N=100005;
char s[N];
int a[N],b[N];
int m=0,locate=0,ans=1e9;int main(){scanf("%s",s);m=strlen(s);if(s[0]>='a'&&s[0]<='z')a[0]=1;for(int i=1;i<m;i++){if(s[i]>='a'&&s[i]<='z'){a[i]=a[i-1]+1;}else a[i]=a[i-1];}for(int j=m-1;j>=0;j--){if(s[j]>='A'&&s[j]<='Z'){b[j]=b[j+1]+1;}else b[j]=b[j+1];}for(int n=0;n<m-1;n++){ans=min(ans,a[n]+b[n+1]);}cout<<ans<<endl;return 0;
} 

这一道题有一点前缀和的感觉,接下来是题目思路:

根据题意,任何一个位置都可以作为那一个“分界点”,即前面小写字母(包括本分界点)都变成大写字母,后面的大写字母(不包括本分界点)都变成小写字母。因此根据这个逻辑,我们可以将每一个字母都作为“分界点”并利用循环分别计算前后大小写字母个数。


先按照题意输入,然后先进行第一个字母的判断(因为循环处可能会出现越界,所以将边界点拿出来单独处理),接着俩个循环(一个正向,一个反向)分别计算字母数量,最后再利用一个循环取所有分界点中,俩个字母数目相加的最小值,最后输出即可。

2.4小红的子数组排列判断

2.1.1题目描述

2.1.2输入描述

2.1.3输出描述

2.1.4示例

2.1.5代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;int n=0,k=0;//数组大小与连续子数组大小
int a[100005];//存储定义排列
int b[100005];//存储当下数字状态
int num=0;//存储当下k数组中有多少不同的数字
int ans=0;//记录答案int main(){scanf("%d%d",&n,&k);for(int i=0;i<n;i++)scanf("%d",&a[i]);for(int i=0;i<k;i++){b[a[i]]++;if(b[a[i]]==1)num++;}if(num==k)ans++;//判断前k个是否满足题意for(int i=k;i<n;i++){b[a[i-k]]--;if(b[a[i-k]]==0)num--;b[a[i]]++;if(b[a[i]]==1)num++;if(num==k)ans++;}cout<<ans<<endl;return 0;
} 

 这道题当时拿到手里的时候,感觉题目很清晰但自己唯一能想到的方法就是暴力(就是一直不断利用for循环),但我也知道这样也会爆TLE,所以接下来给大家分享一个比较良好的算法整体思路如下:


先来为大家讲解一下题意:

我这里输入的数组与k值分别为:

 数组:3 2 3 1 2 3 2 1 2 3 1 3

 k值:3

我们从第一个开始往后模拟(每次往后递推一位):

3 2 3不满足。2 3 1满足。3 1 2满足。1 2 3满足。2 3 2不满足。

3 2 1满足。2 1 2不满足。1 2 3满足。2 3 1满足。3 1 3不满足。

综上所述,输出结果应为6。


从以上的模拟我们应该能发现规律,每次往后地推一位只是少了第一个数多了最后一个数,在判断该子序列是否满足题意时也大可不必采用for循环大法,可以通过判断每位数出现的次数,如果出现的次数num刚好等于k,那么ans++;相反如果子序列中有重复的数,num<k,那么ans不做处理,最后输出即可。


(还有一点也需要提到的是,如果输入的数中有大于k的数字,应当continue,但对该题无影响,这样操作更加严谨)

3.小结

今天的这四道题虽然题目较为简单,但对平时解题时思路的拓展仍有借鉴意义,看完了不要忘了点个赞喔。感谢大家的支持~

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

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

相关文章

想自学编程,看编程书有些看不懂,下一步应该怎么办?

不管你从事什么工作&#xff0c;编程都有助于你的职业发展。学习编程将给你自己赋能。我喜欢尝试新想法&#xff0c;时刻都有希望启动的新项目。学会编程后&#xff0c;我就可以坐下来自己实现&#xff0c;而不需要依赖他人。 编程也会提升你在其他方面的技能。因为你熟练掌握…

Gitlab不允许使用ssh拉取代码的解决方案

一、起因 之前一直是用ssh进行代码拉取&#xff0c;后来公司搞网安行动&#xff0c;不允许ssh进行连接拉取代码了 因为我是用shell写了个小型的CI/CD,部署前端项目用于后端联调的&#xff0c;因此在自动部署时&#xff0c;不方便人机交互&#xff0c;所以需要自动填充账密。 …

护网2024-攻防对抗解决方案思路

一、护网行动简介 近年来&#xff0c;网络安全已被国家上升为国家安全的战略层面&#xff0c;网络安全同样也被视为维护企业业务持续性的关键。国家在网络安全治理方面不断出台法规与制度&#xff0c;并实施了一些大型项目和计划&#xff0c;如网络安全法、等级保护、网络安全…

【UE C++】 虚幻引擎C++开发需要掌握的C++和U++的基础知识有哪些?

目录 0 引言1 关键的 C 知识2 Unreal Engine 相关知识3 学习建议 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&#x1f4a5; 标题&#xff1a;【UE C】 虚幻引擎C开发需要掌握的C和U的基础知识有哪些&#xff1f;❣️ 寄语&…

什么情况下JVM内存中的一个对象会被垃圾回收?

什么情况下JVM内存中的一个对象会被垃圾回收? 1、什么时候会触发垃圾回收?2、被哪些变量引用的对象是不能回收的?3、Java中对象不同的引用类型4、finalize()方法的作用1、什么时候会触发垃圾回收? 平时我们系统运行创建的对象都是优先分配在新生代里的,如图: 然后如果…

【Oracle】PL SQL 怎么重新编译无效的对象

1.打开PL SQL &#xff0c;点击图中有红色的 2.点击齿轮按钮即可 from&#xff1a;【Oracle】PL SQL 怎么重新编译无效的对象_plsql编译无效对象的按钮在哪里-CSDN博客

最新php项目加密源码

压缩包里有多少个php就会被加密多少个PHP、php无需安装任何插件。源码全开源 如果上传的压缩包里有子文件夹&#xff08;子文件夹里的php文件也会被加密&#xff09;&#xff0c;加密后的压缩包需要先修复一下&#xff0c;步骤&#xff1a;打开压缩包 》 工具 》 修复压缩文件…

AIGC 010-CLIP第一个文本和图像对齐的大模型!

AIGC 010-CLIP第一个文本和图像对齐的大模型&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 不客气的说CLIP和扩散模型的成功让计算式视觉领域几乎所有工作都重新做了一遍。 CLIP&#xff08;对比语言-图像预训练&#xff09;论文提出了一种新的对比学习方法&a…

28-ESP32-S3 lwIP 轻量级 TCP/IP 协议栈

ESP32-S3 lwIP 介绍 ESP32-S3 是一款集成了Wi-Fi 和蓝牙功能的微控制器。它的设计初衷是为了方便嵌入式系统的开发。不过你可能会好奇&#xff0c;ESP32-S3 怎么实现与外部网络的通信呢&#xff1f;这里就要提到一个开源的 TCP/IP 协议栈&#xff0c;它叫做lwIP&#xff08;轻…

博客系统多模块开发

创建工程 创建父工程 删除src目录&#xff0c;在pom.xml添加依赖&#xff1a; <!--统一版本 字符编码--><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.b…

使用 Flask 和 Vue.js 构建 Web 应用

文章目录 入门1. 设置 Flask 后端2. 设置 Vue.js 前端 将 Flask 与 Vue.js 集成1. 配置 Flask 来提供 Vue.js 文件2. 构建 Vue.js 组件3. 运行应用程序 结论 在现代 Web 开发中&#xff0c;创建动态和响应式的应用通常涉及将后端框架如 Flask 与前端库如 Vue.js 结合起来。这种…

职责链设计模式

职责链设计模式&#xff08;Chain of Responsibility Design Pattern&#xff09;是一种行为设计模式&#xff0c;使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合。这些对象被链接成一条链&#xff0c;沿着这条链传递请求&#xff0c;直到有一…

2024年5月20日 (周一) 叶子游戏新闻

报告老板&#xff0c;现在就加班&#xff01;《职场浮生记》抢先体验版现已上线今天由LeiYun Games开发&#xff0c;2P Games发行的《职场浮生记》正式在Steam平台推出抢先体验版。玩家将跟随主角的步伐踏入一个最为真实的职场环境之中&#xff0c;在生活与工作之间找寻平衡&am…

数据库多表查询

多表查询&#xff1a; SELECT *FROM stu_table,class WHERE stu_table.c_idclass.c_id; 多表查询——内连接 查询两张表交集部分。 隐式内连接&#xff1a; #查询学生姓名&#xff0c;和班级名称&#xff0c;隐式调用 SELECT stu_table.s_name,class.c_name FROM stu_table…

力扣hot100学习记录(七)

240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题意 在二维矩阵中搜索是否存在一个目标值&#xff0c;该矩阵每一行每一列都是升序…

谷歌推出TransformerFAM架构,以更低的消耗处理长序列文本

Transformer对大模型界的影响力不言而喻&#xff0c;ChatGPT、Sora、Stable Difusion等知名模型皆使用了该架构。 但有一个很明显的缺点&#xff0c;其注意力复杂度的二次方增长在处理书籍、PDF等超长文档时会显著增加算力负担。 虽然会通过滑动窗口注意力和稀疏注意力等技术…

亚马逊云科技峰会福利来啦

2024 亚马逊云科技中国峰会&#xff0c;挑战俱乐部 Hands On 动手实验课程正在直播中&#xff0c;点击链接畅享生成式AI建构之旅&#xff0c;赢心动好礼 &#xff08;直播链接Link&#xff09; 只看不过瘾&#xff1f;别急&#xff01;我们为您准备了【生成式AI助手 Amazon Q 初…

手机视频恢复2个技巧:让您的视频资料重现生机

我们经常使用手机拍摄和保存各种视频资料&#xff0c;包括工作记录和日常生活的记忆。但有时候&#xff0c;由于误删、格式化或存储空间不足&#xff0c;我们会选择清理手机空间&#xff0c;这些视频资料可能会因此消失不见。今天&#xff0c;我们将为您揭秘手机视频恢复的技巧…

北斗卫星赋能水产养殖

北斗卫星赋能水产养殖&#xff1a;开启精准智能化新时代 天气稍有变化&#xff0c;浙江省江山市上余水产养殖场负责人就会通过手机APP实时查看鱼塘水体硝态氮、氨态氮、pH值、化学需氧量等水质参数&#xff0c;做到心中有数。这些数据由鱼塘内的巡航式底改机器人以及数字化监测…

Vue中使用Vue-scroll做表格使得在x轴滑动

页面效果 首先 npm i vuescroll 在main.js中挂载到全局 页面代码 <template><div class"app-container"><Header :titletitle gobackgoBack><template v-slot:icon><van-icon clickgoHome classicon namewap-home-o /></templat…