2024-第四批C++ 第二轮选拔赛(代码加解析)

        第二轮比赛结束了,答案又出来了,充实的一天又过去了......

一、摘苹果

题目描述

        小白同学种植了一颗苹果树,经过他悉心的照料,苹果树终于结果了,结出了很多苹果。

        现在树上有 n 个苹果,因为体力有限,小白同学每分钟只能摘 m 个苹果,而且每过一分钟就会从树上掉落 1 个苹果(不包含在所摘的 m 个苹果之中)。请问小白同学最后能摘到多少个苹果?

输入格式

        一行两个整数 n,m,表示苹果的数量和小白同学每分钟能摘的苹果数量。

输出格式

        一行一个整数,表示小白同学最后能摘到多少个苹果。

样例数据

输入样例 #1
10 3
输出样例 #1
8
输入样例 #2
9 2
输出样例 #2
6

数据范围

对于 20% 的数据,n≤m;

另有 30% 的数据,n mod(m+1)=0;

对于 100% 的数据,1≤n,m≤106。

解析

        这道题其实是一个数学问题,我们可以将m+1为一个组合,也就是每分钟树上会失去多少个苹果,用n/(m+1)则是计算过了多少分钟,由于过一分钟就会掉一个苹果,最后再将n减去算的分钟数,剩下的就是他捡到的。

代码

#include<bits/stdc++.h>
using namespace std;int main(){int n,m;cin>>n>>m;cout<<n-n/(m+1);return 0;
}

二、最长上下坡

题目描述

        人生就好比一条上下坡路,有时候走的顺风顺水,有时候却是一波三折。

        现在给你一条长度为 n 的路,路上有 n 个点,第 i 个点的高度为 hi。现在你需要找到一条连续的上坡或下坡路段,使得这段路的长度最长。

        上坡路段的定义是:从某个点开始,往后的点的高度严格递增,即 hi+1>hi。

        下坡路段的定义是:从某个点开始,往后的点的高度严格递减,即 hi+1<hi。

输入格式

        第一行一个整数 n,表示路的长度。

        第二行 n 个整数 h1,h2,⋯,hn,表示每个点的高度。

输出格式

        一行一个整数,表示最长的上坡或下坡路段的长度。

样例数据

输入样例 #1
5
1 2 3 2 1
输出样例 #1
3

        最长的上坡路段是 1,2,3, 长度为 3; 最长的下坡路段是 3,2,1, 长度为 3; 所以最长的上坡或者下坡路段的长度为 3。

输入样例 #2
6
3 1 3 3 2 1
输出样例 #2
3

数据范围

对于 20% 的数据,2≤n≤3;

对于 70% 的数据,2≤n≤500;

对于 100% 的数据,2≤n≤2×105,0≤hi≤109。

解析

        这道题相对来说,比较简单。

        我们可以定义两个变量up和down,以及求结果的maxx。

        然后判断,如果a[i]>a[i-1],那么up++(也就是把它判断为上升序列的其中的一个元素),否则up=1(也就是它如果不是一个上升序列,那么我们就将它设为1,也就是它停止了上升,就把他设为下一个上升序列的起电);

        如果a[i]<a[i-1],那么down--(也就是把它判断为逆序列的其中的一个元素),否则的话down=1(也就是它如果不是一个逆序列,那么我们就将它设为1,也就是它停止了下降,就把他设为下一个逆序列的起点)。

        最后使用max函数,比较maxx,up和down,结果就是所谓的 “最长上下坡”。

代码

#include<bits/stdc++.h>
using namespace std;
int a[1000000];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int up=1,down=1;int maxx=0;for(int i=2;i<=n;i++){if(a[i]>a[i-1])up++;else up=1;if(a[i]<a[i-1])down++;else down=1;maxx=max(maxx,max(up,down));}cout<<maxx;return 0;
}

三、历史长河

题目描述

        在人类几千年的历史长河中,发生过无数的重要事件,有的影响世界的格局,有的影响人类的命运。

        现在给出 n 个历史事件所出现的年份 ai (年份可能为负,为负表示公元前),需要你来统计哪些年份发生过重要事件,以及每一年发生过多少个事件。

        你需要按照年份从小到大的顺序输出年份以及此年发生过多少个事件。

输入格式

        第一行一个整数 n,表示历史事件的数量。

        第二行 n 个整数 a1,a2,⋯,an,表示每个历史事件所出现的年份。

输出格式

        每一行输出两个整数,第一个整数表示年份,第二个整数表示此年发生过多少个事件,空格隔开。

        按照年份从小到大的顺序输出。

样例数据

输入样例 #1
5
2020 2021 1999 2021 2020
输出样例 #1
1999 1
2020 2
2021 2
输入样例 #2
5
2023 -200 200 2023 2023
输出样例 #2
-200 1
200 1
2023 3

数据范围

对于 30% 的数据,1\leq n\leq 100 ,0\leq a_{i}\leq 2024, 且不存在重复的年份。

对于 60% 的数据,1\leq n\leq 2\times 10^{5}0\leq a_{i}\leq 2024

对于 100% 的数据,1\leq n\leq 2\times 10^{5}-2024\leq a_{i}\leq 2024

解析

        这道题考的是桶排,比较简单。我们直接用一个数组记录每一个年份的重大事件。但是我们要考虑年份是有负数的,所以我们可以让每一个年份加上2025,那么数据范围由-2024~2024到数据范围1~4049。那么,不就好求了嘛。直接输入k,上桶排!

        最后输出时,只要将i减去2025,不就是之前的年份了?再输出它有多少个历史事件就OK了。

代码

#include<bits/stdc++.h>
using namespace std;
int k,c[4050];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>k;c[k+2025]++;}for(int i=1;i<=4049;i++){if(c[i]) cout<<i-2025<<" "<<c[i]<<endl;}return 0;
}

四、变换阵型

题目描述

盛隆同学刚学完C++的二维数组和函数部分,于是他自己写了2个函数对二维数组进行练习。两个函数如下:

int n, a[1005][1005];
// 注意,这里的n和数组a是全局变量
void f1() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= i; j++) {int t = a[i][j];a[i][j] = a[j][i];a[j][i] = t;}}
}
void f2() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n - i + 1; j++) {int t = a[i][j];a[i][j] = a[n-j+1][n-i+1];a[n-j+1][n-i+1] = t;}}
}

现给出一个 n×n 的矩阵 a,矩阵的行列下标均从 1 开始,也就是说矩阵中的第 i 行第 j 列的元素保存在 a[i][j] 中。

现在盛隆同学想要对矩阵 a 进行 Q 次操作,操作共有三种,参数分别如下:

  • 1:调用函数 f1。
  • 2:调用函数 f2。
  • 3 x y:输出矩阵 a 目前第 x 行第 y 列的元素。

输入格式

第一行两个整数 n,Q,表示矩阵的大小和操作的次数。

接下来 n 行,每行 n 个整数,表示矩阵 a。

接下来 Q 行,每行一个操作,操作格式如题目描述。

输出格式

对于每个操作 3 x y,输出一行一个整数,表示矩阵 a 目前第 x 行第 y 列的元素。

样例数据

输入样例 #1
3 3
1 2 3
4 5 6
7 8 9
1
2
3 1 2
输出样例 #1
8

原矩阵经过 2 次操作后的矩阵如下:

9 8 7
6 5 4
3 2 1

所以 a[1][2]=8。

输入样例 #2
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1
3 1 2
2
3 2 3
输出样例 #2
5
10

数据范围

对于 20% 的数据,没有操作一和操作二,只有操作三。

对于 50% 的数据,1≤n≤500,1≤Q≤100。

对于 100% 的数据,1≤n≤1000,1≤Q≤10000, 0≤aij≤109,1≤x,y≤n。

解析

        50pts

        由于Q是小于等于100,那么时间复杂度就比较低,直接复制题目代码,带进去就可以得个50分。

        100pts

        在题目所给的代码中,我们经过观察,发现它是有规律的。

        f1()是把从左到右的对角线两边的数反过来;f2()是把从右到左的对角线两边的数反过来;

        那么,如果说我将f1()或f2()进行偶数倍的操作,会发现矩形是不变的!

        所以题目所给的代码其实是在骗你。(真**的恶心)

代码

#include<bits/stdc++.h>
using namespace std;
int n, a[1005][1005];/*
// 注意,这里的n和数组a是全局变量
void f1() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= i; j++) {int t = a[i][j];a[i][j] = a[j][i];a[j][i] = t;}}
}
void f2() {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n - i + 1; j++) {int t = a[i][j];a[i][j] = a[n-j+1][n-i+1];a[n-j+1][n-i+1] = t;}}
}*/
int main(){int n,Q;cin>>n>>Q ;int b=1,c=1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=Q;i++){int s,x,y;cin>>s;if(s==1) b++;else if(s==2) c++;else{cin>>x>>y;if(b%2==0){swap(x,y);}if(c%2==0){int t=x;x=n-y+1;y=n-t+1;}cout<<a[x][y]<<endl;}}return 0;
}

小结

        这次还行,我看很多同学都考得挺好的。所以呢,如果有不懂或写的不清楚的,可以在评论区里留言,喜欢的话,感谢收藏!!!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【matlab基础知识】(二)

i从1加到100 >> s10;for i1:100,s1s1i;end;s1 s1 5050 >> s20;i1;while(i<100),s2s2i;ii1;end;s2 s2 5050 >> sum(1:100) ans 5050 >> s10;m0;while(s1<10000),mm1;s1s1m;end;s1,m s1 10011 m 141 tic, s0;for i1:100000,ss1/2^i1/3…

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件(已更新)

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢…

在VMware虚拟机ubuntu中运行usb_cam.launch时出现报错出现报错:select timeout

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、运行usb_cam.launch时出现报错出现报错&#xff1a;select timeout1.问题描述2.问题解决 一、运行usb_cam.launch时出现报错出现报错&#xff1a;select timeou…

C 深入指针(2)

目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#…

实习与就业|基于Springboot+vue的实习与就业管理系统(源码+数据库+文档)

实习与就业目录 基于Springbootvue的实习与就业管理系统 一、前言 二、系统设计 三、系统功能设计 管理员登录 就业管理 企业公告信息管理 企业公告类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主…

【Linux】学习笔记

文章目录 [toc]第一章&#xff1a;基础篇01|课程介绍02|内容综述03|什么是Linux04|Linux的内核版本及常见发行版内核版本发行版本Red Hat Enterprise LinuxFedoraCentOSDebianUbuntu 05|安装VirtualBox虚拟机VirtualBox下载url 06|在虚拟机中安装Linux系统Linux安装镜像下载 07…

【Java从入门到精通】Java 流(Stream)、文件(File)和IO

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式&#xff0c;比如&#xff1a;基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据&#xff0c;输出流…

处理SAP 冲销凭证时由于业务部门不一致的报错问题:CTR 100011400L001属于业务部门3000 而不是3121

今天冲销一个2个月前的凭证&#xff0c;出现了一个报错&#xff1a;CTR 100011400L001属于业务部门3000 而不是3121。原因是组织调整冲销凭证时出现了这个错误。 其实解决方法之一是&#xff1a;把成本中心的业务部门换回去&#xff0c;等过账后再在成本中心那里改回来。 还有一…

向量体系结构(5):步幅集中一分散

笔记来源《计算机体系结构 量化研究方法》 回答上一篇最后留下的问题 向量体系结构&#xff1a;向量执行时间-CSDN博客 &#xff08;1&#xff09;如何有效向量化多维矩阵运算&#xff1f; &#xff08;2&#xff09;向量处理器如何高效处理稀疏矩阵&#xff1f; 步幅 步…

P9420 [蓝桥杯 2023 国 B] 子 2023 / 双子数

蓝桥杯2023国B A、B题 A题 分析 dp问题 根据子序列&#xff1a;2&#xff0c;20&#xff0c;202&#xff0c;2023分为4个状态&#xff1b; 当前数字为2时&#xff0c;处于dp[0]&#xff0c;或者和dp[1]结合成dp[2]&#xff1b; 当前数字为0时&#xff0c;和dp[0]结合成dp[…

C++ | 类和对象(上)

目录 什么是类 类的介绍 struct在两种语言中的有何区别 私有变量命名注意点 类的作用域 类的声明定义分离 类的访问限定符 封装 类的实例化 类对象的存储 this指针 一道this指针相关的王炸题&#xff1a; 结语 什么是类 类的介绍 我们举一个日常生活中的例子&…

浏览器中不能使用ES6的扩展语法...报错

浏览器大多数已经支持ES6&#xff08;ECMAScript 2015&#xff09;的扩展语法&#xff08;...&#xff09;&#xff0c;包括Chrome、Firefox、Safari和Edge等。然而&#xff0c;如果你在某些浏览器中遇到无法使用扩展语法的问题&#xff0c;可能是由以下原因导致的&#xff1a;…

网盘——移动文件

本文主要讲解网盘文件操作部分的移动文件&#xff0c;具体步骤如下&#xff1a; 目录 1、实施步骤&#xff1a; 2、代码实现 2.1、在book里面添加移动文件的按钮 2.2、将他添加到界面 2.3、添加移动文件的槽函数 2.4、关联槽函数 2.5、在book中添加成员函数&#xff0c…

Typescript语法二

继承 继承是⾯向对象编程中的重要机制&#xff0c;允许⼀个类&#xff08;⼦类或派⽣类&#xff09;继承另⼀个类&#xff08;⽗类或基类&#xff09;的属性和⽅法。⼦类可以直接使⽤⽗类的特性&#xff0c;并根据需要添加新的特性或覆盖现有的特性。这种机制赋予⾯向对象程序良…

ApiHug 官方站点

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplacehttps://…

《我不是潘金莲》读后感

《我不是潘金莲》这本书是在一家旧书店里面淘的&#xff0c;在返程的车上就已经看得差不多了&#xff0c;回宿舍后又花了一点点时间一口气看完了&#xff0c;整本书花了不到两个小时&#xff0c;算得上速战速决&#xff01;这本书的作者刘震云的大名可谓如雷贯耳&#xff0c;他…

IntelliJ IDEA 的Java注释模板如何配置

一、增加注释模板 1、首先打开 IDEA 设置 Settings…(Windows 快捷键&#xff1a;Ctrl Alt S&#xff0c;Mac 快捷键&#xff1a;command &#xff0c;&#xff09;—> Editor —> Live Templates —> 点击右侧加号 params groovyScript("def result; def st…

笔试狂刷--Day12(模拟 + 链表的公共节点 + dp)

大家好,我是LvZi,今天带来笔试狂刷--Day12(模拟 链表的公共节点 dp) 一.删除公共字符&#xff08;哈希&#xff09; 题目链接:删除公共字符&#xff08;哈希&#xff09; 分析: 分别读取俩个字符串,将第二个字符串存储到set之中,再遍历第一个字符串,删除公共字符 代码: …

【nginx 开发】nginx安装,Nginx介绍

Nginx基础介绍 Nginx反向代理负载均衡动静分离 Nginx的安装NginxNginx常用命令Nginx配置文件 Nginx Nginx是一个高性能的Http和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;Nginx可以作为静态页面的web服务器&#xff0c;Nginx专为性能优化…

LWIP+TCP客户端

一、TCP API函数 其中tcp_poll()函数的第三个参数表示隔几秒调用一次这个周期性函数 二、修改服务器的IP 三、TCP客户端编程思路 申请套接字绑定服务器IP和端口号等待客户端连接 进入连接回调函数在连接回调函数中 配置一些回调函数&#xff0c;如接收回调函数&#xff0c;周期…