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.pswp.cn/diannao/78992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78992.shtml
英文地址,請注明出處:http://en.pswp.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;需要的一直正…