2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)

之前一年拿了国二后,基本就没刷过题了,实力掉了好多,这次参赛只是为了学校的加分水水而已,希望能拿个省三吧 >_<

目录

  • 1. 逃离高塔
    • 思路
    • 代码
  • 2. 消失的蓝宝
    • 思路
    • 代码
  • 3. 电池分组
    • 思路
    • 代码
  • 4. 魔法科考试
    • 思路
    • 代码
  • 5. 爆破
    • 思路
    • 代码
  • 6. 数组翻转
    • 思路
    • 代码
  • 7. 2的幂
  • 8. 研发资源分配

1. 逃离高塔

在这里插入图片描述

思路

简单遍历就好,为了不溢出得取模,因为只看个位数,所以取模不会对结果产生影响

代码

public class Main {public static void main(String[] args) {int res = 0;for (int i = 1; i <= 2025; i++) {int n = (((i * i) % 10) * i) % 10;if (n == 3)res++;}System.out.print(res);}
}

2. 消失的蓝宝

在这里插入图片描述

思路

直接模拟,第一个符合要求的就返回
由于直接遍历可能会超时,因此选择一种条件跳着遍历,在循环里判断即可

4月15日更新:完蛋第二题写错了😭,循环里的N应该从20260411开始的,因为我外层循环是按满足第二个条件来遍历的,内层是判断当前N是否满足第一个条件

代码

public class Main {public static void main(String[] args) {long res = 0;for (long N = 20260411; N < Long.MAX_VALUE; N += 20250412) {if ((N + 20250412) % 20240413 == 0) {res = N;break;}}System.out.print(res);}
}

3. 电池分组

在这里插入图片描述
在这里插入图片描述

思路

如果两组异或和相等的话,那他们两个再异或不就=0?那不就相当于所有电池都异或完=0就行?(感觉有点简单不知道有没有理解错…,应该是没有错)

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int T = sc.nextInt();int[] res = new int[T + 1]; // T组答案(舍弃0索引)for (int i = 1; i <= T; i++) {int sum = 0;int N = sc.nextInt(); // 本组电池的数量for (int j = 1; j <= N; j++) {int element = sc.nextInt();sum = sum ^ element;}if (sum == 0)res[i] = 1;elseres[i] = 0;}for (int i = 1; i <= T; i++) {if (res[i] == 1)System.out.println("YES");elseSystem.out.println("NO");}sc.close();}
}

4. 魔法科考试

在这里插入图片描述
在这里插入图片描述

思路

按题目模拟就行,好像也没涉及啥算法?
记得用 set 去重一下

但是会超时,只能过部分用例

代码

import java.util.HashSet;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] a = new int[n];int[] b = new int[m];for (int i = 0; i < n; i++) {a[i] = sc.nextInt();}for (int i = 0; i < m; i++) {b[i] = sc.nextInt();}HashSet<Integer> set = new HashSet<>();for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {int tmp = a[i] + b[j];if (tmp <= m + n && isSu(tmp)) {set.add(tmp);}}}System.out.println(set.size());sc.close();}public static boolean isSu(int n) {for (int i = 2; i < n - 1; i++) {if (n % i == 0)return false; // 能被整除,不是素数}return true;}
}

5. 爆破

在这里插入图片描述
在这里插入图片描述

思路

依题意得:我感觉我脑袋要被爆破了…
考前还去瞄了一眼并查集,一看题就觉得包是最小生成树,死脑子硬是想不起来,11点磕到13点最后交白卷早知道还不如11点开摆直接交算了😭

代码

下面的代码是下午补的,太久没刷题连冒泡排序,比较器啥的都不会,就下面这段我写到快4点才写完还不知道对不对…(应该不对,只能过部分用例)

import java.util.*;public class Main {public static class Node {int x;int y;int r;public Node() {}public Node(int xx, int yy, int rr) {this.x = xx;this.y = yy;this.r = rr;}}public static class Edge {Node from;Node to;double edgeLen;public Edge() {}public Edge(Node fromNode, Node toNode, double len) {this.from = fromNode;this.to = toNode;this.edgeLen = len;}}public static class MySets {public HashMap<Node, List<Node>> setMap; // 拿到一个点所对应的点集,setMap为多个点集public MySets(List<Node> nodes) {setMap = new HashMap<>();for (Node cur : nodes) {List<Node> set = new ArrayList<>();set.add(cur); // 刚开始每个点都自成一个点集setMap.put(cur, set);}}// 判断两个点是否在同一个集合中public boolean isSameSet(Node from, Node to) {List<Node> fromSet = setMap.get(from);List<Node> toSet = setMap.get(to);return fromSet == toSet; // 看两个点所在的点集,地址是否相同}// 合并集合,把to所在的集合中,所有的元素都加到fromSet集合里public void unionSets(Node from, Node to) {List<Node> fromSet = setMap.get(from);List<Node> toSet = setMap.get(to);for (Node toNode : toSet) {fromSet.add(toNode); // 两点连通,集合合并到fromSet里setMap.put(toNode, fromSet); // 修改toNode节点对应的点集,由toSet改为fromSet}}}public static MySets mysets;public static int N;public static void main(String[] args) {Scanner sc = new Scanner(System.in);N = sc.nextInt();int[][] boom = new int[N][3]; // N个炸弹的信息List<Node> nodes = new ArrayList<>();for (int i = 0; i < N; i++) {boom[i][0] = sc.nextInt(); // xboom[i][1] = sc.nextInt(); // yboom[i][2] = sc.nextInt(); // rnodes.add(new Node(boom[i][0], boom[i][1], boom[i][2]));}mysets = new MySets(nodes);int edgeNum = (N * (N - 1)) / 2; // 边的数量Edge[] edges = new Edge[edgeNum];int edgeIndex = 0;for (int i = 0; i < N; i++) {for (int j = i + 1; j < N; j++) {double d = getDistance(boom[i][0], boom[i][1], boom[j][0], boom[j][1]) - boom[i][2] - boom[j][2];if (d < 0) {// 合并mysets.unionSets(nodes.get(i), nodes.get(j));d = 0;}edges[edgeIndex++] = new Edge(nodes.get(i), nodes.get(j), d);}}// 比较器,按边长度排序Arrays.sort(edges, (edge1, edge2) -> Double.compare(edge1.edgeLen, edge2.edgeLen));// 最小生成树// 对边遍历,舍弃距离为0的边// 判断边的左右两侧点是否是在一个集合里?// 如果是则跳过// 如果不是,须进行uniondouble res = 0;for (int i = 0; i < edgeNum; i++) {if (edges[i].edgeLen == 0)continue;if (mysets.isSameSet(edges[i].from, edges[i].to)) {continue;}res += edges[i].edgeLen;mysets.unionSets(edges[i].from, edges[i].to);}System.out.print(res);}public static double getDistance(int x1, int y1, int x2, int y2) {int X = Math.abs(x1 - x2) * Math.abs(x1 - x2);int Y = Math.abs(y1 - y2) * Math.abs(y1 - y2);return Math.sqrt(X + Y);}
}

6. 数组翻转

在这里插入图片描述
在这里插入图片描述

思路

上一题当时没想出来,考试时先写了这道

翻转后就是两段数字相等的合并成一段大的,所以只需找到翻转前相同数字和最大的两段
多说无益,我语文小白难以表述,直接上图:

example    4 4 5 3 3 3 2 1 3 4 4 3 3 3 5 5 4 12
hashmap    4   [8, 8, 4]5   [5, 10]3   [9, 3, 9]2   [2]1   [1]12  [12]
sorted     4   [8, 8, 4]5   [10, 5]3   [9, 9, 3]2   [2]1   [1]12  [12]         
select_2   4   8 + 8 = 165   10 + 5 = 153   9 + 9 = 18   (max)2   21   112  12
answer     18       

来个好看点的图~
在这里插入图片描述

不知道大家有没有看懂,我的hashmap的键key是一个数字,值是一个列表,代表相同数字组成的一小段一小段,比如原始数组刚开始那一段是[4, 4],那这段总和就是8,加到map里

好像有部分用例没过,暂时不知道漏考虑了哪种情况?

代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();int[] nums = new int[N];HashMap<Integer, List<Integer>> map = new HashMap<>();for (int i = 0; i < N; i++) {nums[i] = sc.nextInt();}for (int i = 0; i < N; i++) {if (map.get(nums[i]) == null) {map.put(nums[i], new ArrayList<>());}int sum = nums[i];while (i + 1 < N && nums[i + 1] == nums[i]) {sum += nums[i];i++;}map.get(nums[i]).add(sum);}int max = 0;Set<Entry<Integer, List<Integer>>> set = map.entrySet();for (Entry<Integer, List<Integer>> ele : set) {int key = ele.getKey();List<Integer> list = ele.getValue();int[] newlist = new int[list.size()];for (int i = 0; i < list.size(); i++) {newlist[i] = list.get(i);}Arrays.sort(newlist);int sum = list.size() > 1 ? newlist[list.size() - 1] + newlist[list.size() - 2] : newlist[list.size() - 1];max = Math.max(max, sum);}System.out.print(max);}
}

7. 2的幂

在这里插入图片描述
在这里插入图片描述

8. 研发资源分配

在这里插入图片描述
在这里插入图片描述

实力有限,真不会写了,好困我先睡觉了😪

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

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

相关文章

JAVA EE_文件操作和IO

人们大多数时候的焦虑&#xff0c;大概是太想要一个那不确定的答案了吧。 一一 陳長生. 1.认识文件 现实中&#xff0c;我们把一张一张有内容的纸整合在一起称为文件&#xff0c;计算机中&#xff0c;通过硬盘这种I/O设备进行数据保存时&#xff0c;它会独立成一个一个的单位保…

UNITY 屏幕UI自适应

1.主要就是根据屏幕的选择根据尺寸 和UI的锚点和中心点来选择&#xff0c;也可以通过代码来动态修改 2.参考视频&#xff1a;Unity UGUI屏幕自适应看这个就够了_哔哩哔哩_bilibili

05-RabbitMQ 面试题-mk

文章目录 1.RabbitMQ 核心组件及功能详解2.RabbitMQ-如何保证消息不丢失?3.RabbitMQ消息的重复消费问题如何解决的?4.RabbitMQ中死信交换机 ? (RabbitMQ延迟队列有了解过嘛)5.RabbitMQ如果有100万消息堆积在MQ , 如何解决(消息堆积怎么解决)6.RabbitMQ的高可用机制有了解过嘛…

产品需求设计评审会:三步精准定位需求核心

“不谋全局者&#xff0c;不足谋一域&#xff1b;不谋万世者&#xff0c;不足谋一时。”——陈澹然 强调了从全局和长远的角度去谋划事情的重要性&#xff0c;与产品设计中先从宏观层面定位需求&#xff0c;而不是陷入细节的理念相契合。 今日清晨&#xff0c;我参加了一场产品…

java中常用的集合 - 面试篇

HashMap 一、基础常量以及结构 //数组默认初始容量static final int DEFAULT_INITIAL_CAPACITY 1 << 4; // aka 16//数组容量最大值static final int MAXIMUM_CAPACITY 1 << 30;//默认扩容因子static final float DEFAULT_LOAD_FACTOR 0.75f;//链表长度阈值 树…

PDF解析示例代码学习

以下是结合多种技术实现的PDF解析详细示例&#xff08;Python实现&#xff09;&#xff0c;涵盖文本、表格和扫描件处理场景&#xff1a; 一、环境准备与依赖安装 # 核心依赖库 pip install pdfplumber tabula-py pytesseract opencv-python mysql-connector-python 二、完整…

Docker容器网络与NAT

一、背景 之前分享关于NAT网络地址转换的相关文章&#xff0c;docker中的网络正好使用到了NAT&#xff0c;顺带着把这个分享一下&#xff0c;分析docker容器的网络数据包流出、数据流入原理分析。 知识回顾: docker运行一个容器之后&#xff0c;会给这个容器一个独立的netns网络…

Spring Boot 热部署详解,包含详细的配置项说明

Spring Boot 热部署详解 1. 热部署简介 热部署&#xff08;Hot Deployment&#xff09;允许在应用运行时修改代码或配置文件&#xff0c;无需重启应用即可使更改生效。Spring Boot 通过 spring-boot-devtools 模块实现这一功能&#xff0c;其核心依赖于 LiveReload 技术和自动…

详细解读 box-sizing: border-box;

代码解读 * {box-sizing: border-box; } 解释&#xff1a; * - 这是CSS的通用选择器&#xff0c;表示匹配文档中的所有元素 box-sizing: border-box; - 设置元素的盒模型计算方式为border-box 盒模型说明&#xff1a; 默认情况下&#xff0c;CSS使用content-box盒模型&…

《一文讲透》第7期:KWDB 巧用标签与索引优化查询性能

引言 在工业物联网快速发展的今天&#xff0c;各类智能传感器设备已广泛应用于智能制造、能源电力、智慧城市等关键领域。这些设备以极高的采样频率持续产生监测数据&#xff0c;使得单条产线每秒产生数十万条传感器数据已成为行业常态&#xff0c;这对数据存储系统的写入吞吐…

哈希扩展——一致性哈希

目录 一、什么是一致性哈希 二、一致性哈希原理 2.1 hash 环 三、服务器扩容场景 3.1 服务器增加 3.2 服务器减少 3.3 使用虚拟节点 四、 一致性哈希的使用场景 一、什么是一致性哈希 一致性哈希是一种哈希算法&#xff0c;用于将数据分布到不同的节点或存储区域&…

arcgis几何与游标(1)

本节我们对几何进行展开学习 ArcPy 的几何对象 在 ArcPy 中&#xff0c;几何对象是表示地理空间数据的核心。它包括点&#xff08;Point&#xff09;、多点&#xff08;Multipoint&#xff09;、线&#xff08;Polyline&#xff09;和面&#xff08;Polygon&#xff09;等类型…

分布式热点网络

核心设计理念&#xff1a; 在自然灾害&#xff08;地震、洪水、台风&#xff09;、极端环境&#xff08;无人区&#xff09;及网络管制&#xff08;欠费停机&#xff09;等场景下&#xff0c;传统中心化网络易因核心节点失效导致全局瘫痪。本方案提出构建去中心化设备网络&…

【5G学习】基本概念之多频资源以及子载波和信道

在5G通信中&#xff0c;子载波、信道以及时域、频域、码域、空域是构建无线传输系统的核心概念。它们共同定义了信号的传输方式、资源分配和多维复用技术。以下是详细解释及其相互关系&#xff1a; 一、核心概念定义 1. 子载波&#xff08;Subcarrier&#xff09; 定义&#…

Coze 和 n8n 的详细介绍及多维度对比分析,涵盖功能、架构、适用场景、成本等关键指标

以下是 Coze 和 n8n 的详细介绍及多维度对比分析&#xff0c;涵盖功能、架构、适用场景、成本等关键指标&#xff1a; 一、Coze 详细介绍 1. 基础信息 类型&#xff1a;低代码自动化平台&#xff08;SaaS&#xff09;。开源性&#xff1a;闭源&#xff08;企业版需付费&…

分发饼干问题——用贪心算法解决

目录 一&#xff1a;问题描述 二&#xff1a;解决思路 贪心策略&#xff08;C语言&#xff09;算法复习总结3——贪心算法-CSDN博客 三&#xff1a;代码实现 四&#xff1a;复杂度分析 一&#xff1a;问题描述 分发饼干问题是一个经典的可以使用贪心算法解决的问题&#xf…

【Python爬虫】简单案例介绍4

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍3-CSDN博客 目录 3.4 完整代码 3.4 完整代码 此小节给出上述案例的完整代码&#xff0c; # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…

使用ADB工具分析Android应用崩溃原因:以闪动校园为例

使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因&#xff1a;以闪动校园为例 前言 应用崩溃是移动开发中常见的问题&#xff0c;尤其在复杂的Android生态系统中&#xff0c;找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…

【蓝桥云课】男女搭配 python

题目 题目 题解 import mathT int(input()) for _ in range(T):N, M, K map(int, input().split())people_num N M# 目前为止可以组成的队数group_num min(N // 2, M)if people_num - group_num * 3 < K:group_num-math.ceil((K-(people_num - group_num * 3))/3)pr…

edge 更新到135后,Clash 打开后,正常网页也会自动跳转

发现了一个有意思的问题&#xff1a;edge 更新135后&#xff0c;以前正常使用的clash出现了打开deepseek也会自动跳转&#xff1a; Search Resultshttps://zurefy.com/zu1.php#gsc.tab0&gsc.qdeepseek &#xff0c;也就是不需要梯子的网站打不开了&#xff0c;需要的一直正…