2025年第十六届蓝桥杯省赛JavaB组真题回顾

 第16届蓝桥杯省赛已经结束了,第一次参加也是坐牢了4个小时,现在还是来总结一下吧(先声明以下的解法,大家可以当作一种思路来看,解法不一定是正解,只是给大家提供一种能够正常想到的思路吧)

试题A:逃离高塔

本题其实没有什么难度,就是一个循环遍历即可,那么唯一需要注意的就是循环遍历的过程中,int是会爆的,这里需要用long来进行存储

public class Main{public static void main(String[] args){int ans=0;//记录最终答案for(long i=1;i<=2025;i++){long x=i*i*i;if(n%10==3){ans++;}}System.out.println(ans);}
}​

 最后进行的答案就是:202

 试题B:消失的蓝宝

这题其实也是循环遍历即可,但是我们不能一个数一个数的去试,如果一个一个去遍历的话,好像是要跑2小时是可以跑出来,那么通过题目我们可以发现:

  1. N+20250412要能够被20240413整除
  2. N+20240413要能够被20250412整除

上述表达式我们可以理解为,这个数一定是20240413的倍数,并且可以发现20250412比20240413是要大9999,那么我们可以设一个数 n1 初始为20240413,然后循环从20240413开始遍历,n1 每次都加上一个20240413(因为最后的结果一定是20240413的倍数,所以其他数就没有必要一个一个去遍历了),然后再循环中我们定义 n2=n1-9999,然后判断如果当前的 n2%20250412==0?(我们每次加的都是20240413,这个数肯定是20240413的倍数,则无需再判断n1%20240413==0?),如果等于0那么再减去一个20250412就是最终答案!(因为我们是第一个表达式为基准的,所以要减去一个20250412)

public class Main{public static void main(String[] args){for(long n1=20240413L;n1<Long.MAX_VALUE;n1+=20240413){long n2=n1-9999;//判断if(n2%20250412==0){System.out.println(n1-20250412);break;}}}
}

最终答案就是:409876661809331 

 试题C:电池分组

这题就是一个位运算判断:要求将若干个数分为2组数字,那么这两组数字的异或和结果一样的话,一定是等于0的,这是为啥呢?举个例子:

例如样例的 1 2 3,1和2进行异或和后是3,那么3^3不就是0吗?所以我们只需要遍历一遍数组看看最后的异或结果是不是0即可(偷偷抱怨:这题这是太可惜了,考前1周都在学动态规划,考场看到这题还以为是01背包的选与不选的变种问题,最后还没写出来!!!)

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int t=scan.nextInt();while(t-->0){int n=scan.nextInt();int ans=0;for(int i=0;i<n;i++){ans^=scan.nextInt();}if(ans==0){System.out.println("YES");}else{System.out.println("NO");}}}
}

 试题D:魔法科考试

这题的考点就是判断素数的问题,其实就是两个循环遍历两个数组然后判断条件是否成立(需要的注意的是,这里会重复计算条件成立的同一个数,那么应该Set来过滤重复的数),再一个就是性能的问题,这里的数据是20000,如果使用朴素方法判断一个数是不是素数,那么最坏情况的时间复杂度就是n*m*log(a[i]+b[j]),这个时间复杂度是决定会超时的,在洛谷上这个时间复杂度是只能过8个案例的,所以我们应该提前筛好素数,然后在O(1)的时间复杂度判断是不是素数!(考场上我也没注意,使用的就是朴素的判断素数,这题也是拿不满的,可惜!!!)

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;public class Main{static int[]prime=new int[20005];static boolean st[]=new boolean[20005];static int cnt=0;static Set<Integer> set=new HashSet<>();static int num;public static void main(String[] args){Scanner scan=new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();int []a=new int[n];int []b=new int[m];for(int i=0;i<n;i++){a[i]=scan.nextInt();}for(int i=0;i<m;i++){b[i]=scan.nextInt();}num=n+m;//筛素数creat();//遍历枚举int ans=0;//记录最终答案for(int i=0;i<n;i++){for(int j=0;j<m;j++){int s=a[i]+b[j];if(s<=num){//判断是不是素数if(set.contains(s)){ans++;set.remove(s);}}}}System.out.println(ans);}public static void creat(){//这是只需要筛选出num以内的素数即可,因为超过num的素数我们根本判断不到for(int i=2;i<=num;i++){if(!st[i]){prime[cnt++]=i;set.add(i);}for(int j=0;j<cnt;j++){if(i*prime[j]>num)break;st[i*prime[j]]=true;if(i%prime[j]==0)break;}}}
}

试题E:爆破

本题的核心就是在于,如何知道两个圆的最短距离:两个圆心之间的距离减去两个圆各自的半径,如果<=0那么就是相交的,如果不是那么就不是相交的

 画图分析:(画图画的不好请见谅)

import java.util.Scanner;public class Main{static int g[][];public static void main(String[] args) {Scanner scan=new Scanner(System.in);int n=scan.nextInt();g=new int[n+1][3];for(int i=1;i<=n;i++){g[i][0]=scan.nextInt();g[i][1]=scan.nextInt();g[i][2]=scan.nextInt();}//创建n*n的表格double dp[][]=new double[n+1][n+1];//dp[i][j]表示第i个圆和第j个圆之间的距离double ans=0;//存放最后答案for(int i=1;i<=n;i++){double min=Double.MAX_EXPONENT;//寻找当前圆和其他圆的最小距离for(int j=1;j<=n;j++){//判断第i个圆和第j个圆的距离//先判断是不是自身if(i==j){dp[i][j]=Double.MAX_EXPONENT;//因为我们最后要求一个最小的值,所以这里赋最大值}else{dp[i][j]=func(i,j);}min=Math.min(min,dp[i][j]);}ans+=min;}System.out.printf("%.2f",ans);}//判断距离public static double func(int i,int j) {//如果横坐标相同,直接判断纵坐标距离if(g[i][0]==g[j][0]){int len=Math.abs(g[i][1]-g[j][1]);//得到两个圆心的距离,再减去两个半径len=len-(g[i][2]+g[j][2]);//判断是不是小于0.小于0就是相交的,距离就是0return len<=0?0:len;}//如果纵坐标相同,直接判断横坐标的距离if(g[i][1]==g[j][1]){int len=Math.abs(g[i][0]-g[j][0]);//得到两个圆心的距离,再减去两个半径len=len-(g[i][2]+g[j][2]);//判断是不是小于0.小于0就是相交的,距离就是0return len<=0?0:len;}//此时是横纵坐标都不在一条线上,需要利用横纵坐标来结合勾股定理来得到两个圆心的距离//我们以直角为基准,求两个临边的长度,然后通过勾股定理来求出对边(斜边)的长度int lenx=Math.abs(g[i][0]-g[j][0]);int leny=Math.abs(g[i][1]-g[j][1]);//勾股double len=Math.sqrt(lenx*lenx+leny*leny);//此时得到两个圆心的位置,然后再减去两个圆的半径len=len-(g[i][2]+g[j][2]);return len<=0?0:len;}
}

试题F:数组翻转

本题呢本质上来说就是找两个最大的连续区间,暴力+优化

根据样例分析:

4 4 3 3 2 1 3 以样例为例就是最后变成4 4 3 3 3 1 2

那我们可以拓展一下 4 4 3 3 2 1 3 3 4 4 4

那就是4 4 4 4 4 3 3 1 2 3 3

我们会发现翻转的最佳效果是把连续并且相同的数最大的和第二大的合并在一起

 以下代码是暴力解法可能是会超时的(如果后续有更好的想法再做更新吧)

import java.util.Scanner;public class Main{static boolean st[];//判断当前数是不是查找过public static void main(String[] args) {Scanner scan=new Scanner(System.in);int n=scan.nextInt();int[]a=new int[n];int max=0;for(int i=0;i<n;i++){a[i]=scan.nextInt();max=Math.max(a[i],max);}st=new boolean[max+1];long ans=0;//记录最终答案for(int i=0;i<n;i++){if(st[a[i]])continue;//此时说明当前数判断过了int max1=0;//记录第一长的区间长度int max2=0;//记录第二长的区间长度int cnt=0;for(int j=i;j<n;j++){if(a[j]==a[i]){cnt++;}else{//如果不是,那么我们记录一下之前的长度if(cnt>max1){max2=max1;max1=cnt;}else if(cnt>max2){max2=cnt;}cnt=0;}}if(cnt!=0){if(cnt>max1){max2=max1;max1=cnt;}else if(cnt>max2){max2=cnt;}}st[a[i]]=true;//此时统计两个最长区间ans=Math.max(ans,1l*a[i]*(max1+max2));}System.out.println(ans);}
}

试题G:2的幂

 本题暂时没有什么好的思路就先:略(如果有佬有想法可以评论在评论区)

...

 

试题H:研发资源分配

 

这题读完题目感觉就是一个全排列求最大价值问题,但是直接dfs肯定是会超时的(只能过20%的案例),所以可以试试贪心策略,为了使 A 部门获得的资源尽可能多,B 部门获得的资源尽可能少,每天都让 A 部门提交比 B 部门当天提交等级刚好大 1 的等级(如果存在),如果没有更大的等级,就选择最小的等级,避免资源作废。如果都选择不了,那么就只能判断相等的数能不能相互抵消了

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] b = new int[n];for (int i = 0; i < n; i++) {b[i] = scanner.nextInt();}boolean[] used = new boolean[n + 1];int sumA = 0;int sumB = 0;for(int i=0;i<n;i++){//找出当前只比b[i]大一个的数int index=-1;//默认没找到int max=Integer.MAX_VALUE;for(int j=1;j<=n;j++){if(j>b[i] && !used[j]){//此时是找到了index=j;used[j]=true;sumA+=i+1;break;}}//判断有没有找到if(index==-1){//此时说明没有找到,那么我们找最小的数for(int j=1;j<=n;j++){if(j<b[i] && !used[j]){//此时是找到了index=j;used[j]=true;sumB+=i+1;break;}}}//此时判断等于的情况if(!used[b[i]] && index==-1){//此时可以找到相同的sumA+=0;sumB+=0;used[b[i]]=true;}}System.out.println(sumA-sumB);}
}

总结

本次蓝桥杯相对前几届来说算法考的其实不多,主要还是逻辑思维问题, 我在考场上也只是做了一个填空和一个大题,大一第一次参加还是经验不够,总想着这题暴力肯定超时不愿意去写,一直坐在那里思考正解,但是这是非常不对的,我们应该先从暴力解开始优化才对,好歹写了还有一点分,再加上第一次参加肯定还是会紧张的,只能说明年继续努力吧!!!等到后面蓝桥云课加入了今年的题目,大家可以试试上述代码能通过几个案例哈(如果上述题解大佬们有更好的想法欢迎在评论区留言!!!)

 

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

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

相关文章

深入剖析 Axios 的 POST 请求:何时使用 qs 处理数据

在前端开发中&#xff0c;Axios 是一个广泛使用的用于发送 HTTP 请求的库&#xff0c;特别是在处理 POST 请求时&#xff0c;数据的处理方式会直接影响到请求能否正确被后端接收和处理。其中&#xff0c;使用 qs 库对数据进行处理是一个常见的操作点&#xff0c;本文将深入探讨…

通过websocket给服务端发送订单催单提醒消息

controller层 GetMapping("/reminder/{id}")public Result Remainder(PathVariable("id") Long id){orderService.remainder(id);return Result.success();} 实现类 Overridepublic void remainder(Long id) {Orders ordersDB orderMapper.getById(id);…

ros_note02

note02 节点 ROS2中每一个节点只负责一个单独的模块化功能 如&#xff1a;一个节点负责控制车轮转动&#xff0c;一个节点负责从激光雷达获取数据&#xff0c;一个节点负责定位 通信方式&#xff1a; 话题&#xff1a;topic服务&#xff1a;services动作&#xff1a;Actio…

使用治疗前MR图像预测脑膜瘤Ki-67的多模态深度学习模型

大家好&#xff0c;我是带我去滑雪&#xff01; 脑膜瘤是一种常见的脑部肿瘤&#xff0c;Ki-67作为肿瘤细胞增殖的标志物&#xff0c;对于评估肿瘤的生物学行为、预后以及治疗方案的制定具有至关重要的作用。然而&#xff0c;传统的Ki-67检测依赖于组织学切片和免疫组化染色等方…

【大模型系列篇】深度研究智能体技术演进:从DeepResearch到DeepResearcher,如何重构AI研究范式

DeepResearch 的概念与功能最早由 Google 在 Gemini 系列产品中推出&#xff0c;用于自动化生成结构化研究报告&#xff0c;近期底层依赖模型Gemini升级到了2.5 Pro。而我们常规认知的DeepResearch是由OpenAI推出的一款由优化版的 o3 模型驱动专注于深度研究和分析的AI智能体产…

PostgreSQL 如何查看端口号

PostgreSQL 如何查看端口号 PostgreSQL大多数情况下&#xff0c;默认端口是5432&#xff0c;但某些环境中可能配置为其它端口。 一 基本查询方法 1.1 psql 命令行工具查询 -- 方法1&#xff1a;查看当前连接信息&#xff08;包含端口&#xff09; \conninfo-- 方法2&#x…

淘宝大数据接口解析:商品类目 / 价格 / 销量多维数据采集与存储方案

一、引言 在电商领域&#xff0c;淘宝拥有海量的商品数据&#xff0c;这些数据对于商家的市场分析、营销策略制定以及消费者的购物决策都具有重要价值。本文将详细介绍如何通过淘宝大数据接口采集商品的类目、价格、销量等多维数据&#xff0c;并提供数据存储的方案&#xff0…

分库分表,分库策略是什么?

在Java面试中,分库分表是解决数据库性能瓶颈和扩展性问题的常见方案。分库策略主要关注如何将数据水平拆分到多个数据库实例中,以下是详细的分库策略解析: 一、分库策略的核心目标 负载均衡:分散数据存储和查询压力,避免单库成为性能瓶颈。扩展性:支持业务增长,通过增加…

STM32 HAL库SPI读写W25Q128(软件模拟+硬件spi)

1. 引言 在嵌入式系统开发中&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff09;总线是一种常用的串行通信协议&#xff0c;用于在微控制器和外部设备之间进行高速数据传输。W25Q128 是一款常见的 SPI Flash 芯片&#xff0c;具有 128Mbit&#xff08;16MB&a…

系统的安全及应用

仓库做了哪些优化 仓库源换成国内源不使用root用户登录将不必要的开机启动项关闭内核的调优 系统做了哪些安全加固 禁止使用root禁止使用弱命令将常见的 远程连接端口换掉 系统安全及应用 Cpu负载高 java程序 运行异常中病毒&#xff1f; ps aux - - sort %cpu %mem Cpu …

Java Lambda 表达式详解:发展史、语法、使用场景及代码示例

Java Lambda 表达式详解&#xff1a;发展史、语法、使用场景及代码示例 1. Lambda 表达式的发展史 背景与动机 JDK 7 前&#xff1a;Java的匿名内部类虽强大&#xff0c;但代码冗余&#xff08;如事件监听器、集合遍历&#xff09;。JDK 8&#xff08;2014&#xff09;&#…

Linux 命令全解析:从零开始掌握 Linux 命令行

Linux 作为一款强大的开源操作系统&#xff0c;广泛应用于服务器、嵌入式系统以及超级计算机领域。掌握 Linux 命令行技能&#xff0c;是每一位开发者和系统管理员的必备能力。本文将从基础开始&#xff0c;为你详细介绍常用的 Linux 命令&#xff0c;以及它们的使用场景和示例…

【已更新完毕】2025泰迪杯数据挖掘竞赛C题数学建模思路代码文章教学:竞赛智能客服机器人构建

完整内容请看文末最后的推广群 基于大模型的竞赛智能客服机器人构建 摘要 随着国内学科和技能竞赛的增多&#xff0c;参赛者对竞赛相关信息的需求不断上升&#xff0c;但传统人工客服存在效率低、成本高、服务不稳定和用户体验差的问题。因此&#xff0c;设计一款智能客服机器…

关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析

以下是关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析&#xff1a; 一、汽车辅助驾驶等级详解 根据SAE&#xff08;国际自动机工程师学会&#xff09;的标准&#xff0c;自动驾驶分为 L0到L5 六个等级&#xff1a; 1. L0&#xff08;无自动化&…

神经网络如何表示数据

神经网络是如何工作的&#xff1f;这是一个让新手和专家都感到困惑的问题。麻省理工学院计算机科学和人工智能实验室&#xff08;CSAIL&#xff09;的一个团队表示&#xff0c;理解这些表示&#xff0c;以及它们如何为神经网络从数据中学习的方式提供信息&#xff0c;对于提高深…

网络复习二(TCP【3】)

一、为什么TIME_WAIT等待的时间是2MSL&#xff1f; MSL&#xff1a;报文最大生存时间 我们要知道TCP报文是基于IP协议生存的&#xff0c;而在IP头中有一个TTL&#xff08;经过路由跳数&#xff09;&#xff0c;当TTL为0使&#xff0c;数据报被丢失&#xff0c;同时发送ICMP报…

Go:基本数据

文章目录 整数浮点数复数布尔值字符串字符串字面量UnicodeUTF - 8字符串和字节 slice字符串和数字的相互转换 常量常量生成器 iota无类型常量 整数 分类 Go 的整数类型按大小分有 8 位、16 位、32 位、64 位 &#xff0c;同时有符号整数包括int8、int16、int32、int64 &#…

0x03.Redis 通常应用于哪些场景?

回答重点 1)缓存(Cache): Redis 最常用的场景是作为缓存层,以减少数据库的负载,提高数据读取速度。例如,常用的用户会话数据和页面渲染结果可以存储在 Redis 中。2)分布式锁(Distributed Lock): Redis 可以用作分布式锁的实现,确保在分布式系统中资源的安全访问,避免…

大数据学习笔记

文章目录 1. 大数据概述1.1 大数据的特性1.2 大数据技术生态1.2.1 Hadoop 的概念特性1.2.2 Hadoop生态圈 — 核心组件与技术栈1.2.3 Hadoop生态演进趋势 2. 数据处理流程与技术栈2.1 数据采集2.1.1 日志采集工具2.1.2 实时数据流2.1.3 数据迁移 2.2 数据预处理2.2.1 批处理2.2.…

Spring Boot 自定义商标(Logo)的完整示例及配置说明( banner.txt 文件和配置文件属性信息)

Spring Boot 自定义商标&#xff08;Logo&#xff09;的完整示例及配置说明 1. Spring Boot 商标&#xff08;Banner&#xff09;功能概述 Spring Boot 在启动时会显示一个 ASCII 艺术的商标 LOGO&#xff08;默认为 Spring 的标志&#xff09;。开发者可通过以下方式自定义&a…