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

news2025/5/13 18:14:10

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

目录

  • 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;
			else
				res[i] = 0;
		}
		for (int i = 1; i <= T; i++) {
			if (res[i] == 1)
				System.out.println("YES");
			else
				System.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(); // x
            boom[i][1] = sc.nextInt(); // y
            boom[i][2] = sc.nextInt(); // r
            nodes.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的边
        // 判断边的左右两侧点是否是在一个集合里?
        // 如果是则跳过
        // 如果不是,须进行union
        double 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 = 16
           5   10 + 5 = 15
           3   9 + 9 = 18   (max)
           2   2
           1   1
           12  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.coloradmin.cn/o/2335684.html

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

相关文章

01-算法打卡-数组-二分查找-leetcode(704)-第一天

1 数组基础理论 数组是存放在连续内存空间上的相同数据结构的集合。数组可以通过下标索引快速获取数据&#xff0c;因为数组的存储空间是连续的所以在删除、更新数据的时候需要移动其他元素的地址。 下图是一个数组的案例图形&#xff1a;【内存连续、索引小标从0开始可…

怎么看英文论文 pdf沉浸式翻译

https://arxiv.org/pdf/2105.09492 Immersive Translate Xournal打开

RabbitMQ 深度解析:从基础到高级应用的全面指南

&#x1f430; RabbitMQ 深度解析&#xff1a;从基础到高级应用的全面指南 前言&#x1f4d8; 一、RabbitMQ 简介⚙️ 二、核心特性可靠性 &#x1f512;灵活路由 &#x1f504;高可用性 &#x1f310;多协议支持 &#x1f30d;多语言客户端 &#x1f4bb;插件机制 &#x1f50…

【图灵Python爬虫逆向】题七:千山鸟飞绝

题目背景 题目地址&#xff1a;https://stu.tulingpyton.cn/problem-detail/7/ 这一题为中等难度 打开控制台时会发现进入无限debug&#xff0c;可以通过右键点击"一律不在此处暂停"来绕过这个障碍。 一、请求与响应分析 1. 请求参数分析 首先观察网络请求&…

ubuntu 2404 安装 vcs 2018

参考ubuntu 2204 安装 vcs 2018 系统信息 Ubuntu 24.04.2 LTS ubuntu和 安装后的 vcs 花费了 22G , 其中 "安装后的 vcs" 占13G预先配置 过程 和 2204 安装 vcs 2018 不同, 其他相同 // vm-tools 的安装, 不是虚拟机不需要 sudo apt-get update sudo apt-get inst…

潇洒浪: Dify 上传自定义文件去除内容校验 File validation failed for file: re.json

Dify上传文件 添加其他文件类型如 my.myselfsuffix 上传成功 执行报错 File validation failed for file: re.json 解决办法 Notepad++ 搜索dify源码

python-66-前后端分离之图书管理系统的Vue前端项目逐行分析

文章目录 1 App.vue的数据表格1.1 template部分1.1.1 div标签1.1.2 h1标签1.1.3 el-button标签1.1.4 el-table标签1.1.5 el-table-column标签1.1.6 表格中放置按钮1.2 script部分1.2.1 加载库和函数1.2.2 创建响应式数组1.2.3 创建getBooks函数1.2.4 onMounted函数1.2.5 创建ha…

【实战手册】8000w数据迁移实践:MySQL到MongoDB的完整解决方案

🔥 本文将带你深入解析大规模数据迁移的实践方案,从架构设计到代码实现,手把手教你解决数据迁移过程中的各种挑战。 📚博主其他匠心之作,强推专栏: 小游戏开发【博主强推 匠心之作 拿来即用无门槛】文章目录 一、场景引入1. 问题背景2. 场景分析为什么需要消息队列?为…

OpenAI为抢跑AI,安全底线成牺牲品?

几年前&#xff0c;如果你问任何一个AI从业者&#xff0c;安全测试需要多长时间&#xff0c;他们可能会淡定地告诉你&#xff1a;“至少几个月吧&#xff0c;毕竟这玩意儿可能改变世界&#xff0c;也可能毁了它。”而现在&#xff0c;OpenAI用实际行动给出了一个新答案——几天…

OpenCV 图形API(25)图像滤波-----均值滤波(模糊处理)函数blur()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用归一化的方框滤波器模糊图像。 该函数使用以下核来平滑图像&#xff1a; K 1 k s i z e . w i d t h k s i z e . h e i g h t [ 1 1 ⋯ …

轻量级开源文件共享系统PicoShare本地部署并实现公网环境文件共享

&#xfeff;## 前言 本篇文章介绍&#xff0c;如何在 Linux 系统本地部署轻量级文件共享系统 PicoShare&#xff0c;并结合 Cpolar 内网穿透实现公网环境远程传输文件至本地局域网内文件共享系统。 PicoShare 是一个由 Go 开发的轻量级开源共享文件系统&#xff0c;它没有文…

UE5蓝图之间的通信------接口

一、创建蓝图接口 二、双击创建的蓝图接口&#xff0c;添加函数&#xff0c;并重命名新函数。 三、在一个蓝图&#xff08;如玩家角色蓝图&#xff09;中实现接口&#xff0c;如下图&#xff1a; 步骤一&#xff1a;点击类设置 步骤二&#xff1a;在细节面板已经实现的接口中…

银河麒麟服务器操作系统V10安装Nvidia显卡驱动和CUDA(L40)并安装ollama运行DeepSeek【开荒存档版】

前期说明 麒麟官方适配列表查找没有L40,只有海光和兆芯适配麒麟V10,不适配Intel芯片 但是我在英伟达驱动列表查到是适配的! 反正都算是X86,我就直接开始干了,按照上面安装系统版本为:银河麒麟kylinos V10 sp3 2403 输入nkvers可以查看麒麟系统具体版本: 安装Nvid…

学习八股的随机思考

随时有八股思考都更新一下&#xff0c;理解的学一下八股。谢谢大家的阅读&#xff0c;有错请大家指出。 bean的生命周期 实际上只有四步 实例化 ----> 属性赋值 ---> 初始化 ---> 销毁 但是在实例化前后 初始化前后 会存在一些前置后置的处理&#xff0c;目的是增…

山东大学软件学院创新项目实训开发日志(10)之测试前后端连接

在正式开始前后端功能开发前&#xff0c;在队友的帮助下&#xff0c;成功完成了前后端测试连接&#xff1a; 首先在后端编写一个测试相应程序&#xff1a; 然后在前端创建vue 并且在index.js中添加一下元素&#xff1a; 然后进行测试&#xff0c;测试成功&#xff1a; 后续可…

AUTO-RAG: AUTONOMOUS RETRIEVAL-AUGMENTED GENERATION FOR LARGE LANGUAGE MODELS

Auto-RAG&#xff1a;用于大型语言模型的自主检索增强生成 单位&#xff1a;中科院计算所 代码&#xff1a; https://github.com/ictnlp/Auto-RAG 拟解决问题&#xff1a;通过手动构建规则或者few-shot prompting产生的额外推理开销。 贡献&#xff1a;提出一种以LLM决策为中…

基础贪心算法集合2(10题)

目录 1.单调递增的数字 2.坏了的计算器 3.合并区间 4.无重叠区间 5. 用最少数量的箭引爆气球 6.整数替换 解法1&#xff1a;模拟记忆化搜索 解法2位运算贪心 7.俄罗斯套娃信封问题 补充.堆箱子 8.可被3整除的最大和 9.距离相等的条形码 10.重构字符串 1.单调递增的数字…

空间信息可视化——WebGIS前端实例(二)

技术栈&#xff1a;原生HTML 源代码&#xff1a;CUGLin/WebGIS: This is a project of Spatial information visualization 5 水质情况实时监测预警系统 5.1 系统设计思想 水安全是涉及国家长治久安的大事。多年来&#xff0c;为相应国家战略&#xff0c;诸多地理信息领域的…

Vue3微前端架构全景解析:模块联邦与渐进式集成

一、微前端核心模式 1.1 主应用与微应用通讯机制 1.2 架构模式对比 维度iFrame方案Web Components模块联邦组合式微前端样式隔离完全隔离Shadow DOM构建时CSS作用域动态样式表通信复杂度困难(postMessage)自定义事件依赖共享Props传递依赖共享不共享按需加载自动共享显式声明…

多模态大语言模型arxiv论文略读(十九)

MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文标题&#xff1a;MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文作者&#xff1a;Yanqing Liu, Kai Wang, Wenqi Shao, Ping Luo, Yu Qiao, Mike Zheng Shou, Kaipeng Zhang, Yang Yo…