当前位置: 首页 > article >正文

十五届蓝桥杯省赛Java B组(持续更新..)

目录

  • 十五届蓝桥杯省赛Java B组
    • 第一题:报数
    • 第二题:类斐波那契数
    • 第三题:分布式队列
    • 第四题:食堂
    • 第五题:最优分组
    • 第六题:星际旅行
    • 第七题:LITS游戏
    • 第八题:拼十字

十五届蓝桥杯省赛Java B组

第一题:报数

在这里插入图片描述
📚

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);long result = 202420242024L / 2 * 24;//思想:奇数位都是20的倍数,偶数位都是24的倍数,可知202420242024的一半为奇数,第202420242024位除以2乘以24就能得到答案//举个例子:第4位是第2个24的倍数,第6位是第3个24的倍数......那第202420242024位就是第101210121012个24的倍数,//所以答案就是:202420242024 / 2 * 24System.out.println(result);scan.close();}
}

主要是找规律,硬解很难解出来。

第二题:类斐波那契数

在这里插入图片描述

因为是找最大,所以逆序遍历会快点,第一个符合条件的数就是答案。

我的暴力解法,比赛不会那只能放在一边让他跑了,按道理来说是能跑出来的。

package test;import javax.swing.*;
import java.util.*;public class Main {static int N = 10000000;static int[] a = new int[20];static long[] b = new long[N];public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = N; i >= 197; i--) {if(check(i)){System.out.println(i);break;}else {System.out.println(i);}}}// 检查是否是 类斐波那契 循环数static boolean check(int x) { // num是位数String str = x + "";int len = str.length();for (int i = 0; i < len; i++) {b[i + 1] = str.charAt(i) - '0';}for (int i = len + 1; b[i - 1] < x; i++) {b[i] = dfs(i);
//            System.out.println(" i:"+i);
//            System.out.println(b[i]);if( b[i] == x) return true;if( b[i] > x) return false;}return false;}// dfs递归static long dfs(int x){if(x == 1) return b[1];if(x == 2) return b[2];if(x == 3) return b[3];return dfs(x-1) + dfs(x - 2) + dfs(x - 3);}
}

📚法一

import java.util.*;public class Main {static int N = 10000000;public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = N; i >= 197; i--) {if(check(i)){System.out.println(i);break;}}}static boolean check(int x){String str = x + "";// 获取位数int len = str.length();// 数组大小为len就够用了int[] dp = new int[len];// 将 x 每一位都拆出来for (int i = 0; i < len; i++) {dp[i] = str.charAt(i) - '0';}// 数组求和int sum = 0;for (int i = len; sum < x ; i++) {sum = Arrays.stream(dp).sum(); // 数组求和,注意语法dp[i % len] = sum; // 后面用不到的下标元素 进行替换}return sum == x;  // 两种结果:=x返回true,>x返回false}
}

每次求和其实只用到len个元素,所以可以对后续用不到的元素进行替换。

📚法二:


import java.util.*;public class Main {static int N = 10000000;public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = N; i >= 197; i--) {if(check(i)){System.out.println(i); // 7913837break;}}}// 检查是否是 类斐波那契 循环数static boolean check(int x) { // num是位数String str = x + "";int len = str.length();int sum = 0;ArrayList<Integer> a = new ArrayList<>();for (int i = 0; i < len; i++) {int num = str.charAt(i) - '0';a.add(num);   // [1,9,7]sum += num;}//上面的这个循环究竟是在干什么事情:下面的这个以1234为例子说明,方便理解//列表 a 存储了整数 1234 的各个数位数字 [1, 2, 3, 4],// 变量 sum 的值为 10,即整数 1234 各个数位数字的总和。a.add(sum);// 此时变成了[1, 2, 3, 4,10]if(sum == x) return true;while(sum < x){//乘以2减去这个里面的第一个元素就是这个类斐波那契数列的规律,避免使用纯粹的数学方法计算sum = sum * 2 - a.get(0); a.remove(0);a.add(sum);if(sum == x) return true;}return false;}
}

思想:要求第k+1位以后的数只需将k乘以2减去这个里面的第一个元素就是这个类斐波那契数列的规律,避免使用纯粹的数学方法计算。

第三题:分布式队列

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

👇写成这样有9个样例过不了,因为没有考虑副队列不超过主队列。

import java.util.*;public class Main {static int N = 2010;static int INF = 100005;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] a = new int[n];while(sc.hasNext()){String str = sc.next();if(str.equals("add")){int num = sc.nextInt();a[0] ++;}else if (str.equals("sync")){int num = sc.nextInt();a[num] ++;} else if (str.equals("query")) {int ans = INF;for (int i = 0; i < n; i++) {ans = Math.min(ans,a[i]);}System.out.println(ans);}}}
}

📚分布式队列

第四题:食堂

在这里插入图片描述

import java.util.*;public class Main {static int N = 2010;static int INF = 100005;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int q = sc.nextInt();while(q-->0) {int a2 = sc.nextInt();int a3 = sc.nextInt();int a4 = sc.nextInt();int b4 = sc.nextInt();int b6 = sc.nextInt();int sum = 0;// 满座 匹配4人寝坐4人桌while(a4 != 0 && b4 != 0){a4 --;b4 --;sum += 4;}// 满座 匹配2x2人寝坐4人桌while(a2 != 0 && b4 != 0){a2 = a2 - 2;b4 --;sum += 4;}// 满座 匹配2+4人寝坐6人桌while(a2 != 0 && a4 != 0 && b6 != 0){a2 --;a4 --;b6 --;sum += 6;}// 满座 匹配2x3人寝坐6人桌while(a3 != 0 && b6 != 0){a3 = a3 - 2;b6--;sum += 6;}// 满座 匹配3x2人寝坐6人桌while(a2 != 0 && b6 != 0){a2 = a2 - 3;b6 --;sum += 6;}// 空1座 匹配3人寝坐4人桌while(a3 != 0 && b4 != 0){a3--;b4--;sum += 3;}// 空1座 匹配3+2人寝坐6人桌while(a3 != 0 && a2 != 0 && b6 != 0){a3--;a2--;b6--;sum += 5;}// 空2座 匹配2人寝坐4人桌while(a2 != 0 && b4 != 0){a2--;b4--;sum += 2;}// 空2座 匹配4人寝坐6人桌while(a4 != 0 && b6 != 0){a4--;b6--;sum += 4;}// 空2座 匹配2x2人寝坐6人桌while(a2 != 0 && b6 != 0){a2 = a2 - 2;b6--;sum += 4;}// 空3座 匹配3人寝坐6人桌while(a3 != 0 && b6 != 0){a3--;b6--;sum += 3;}// 空4座 匹配2人寝坐6人桌while(a2 != 0 && b6 != 0){a2--;b6--;sum += 2;}System.out.println(sum);}}
}

☝️以上写法还有点小错误,b!=0是可以的,但是a不能写成a!=0。例如满座 匹配2x2人寝坐4人桌,要确保a2宿舍有两个,所以不能写成a2!=0,要写成a2 >= 2

📚

import java.util.*;public class Main {static int N = 2010;static int INF = 100005;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int q = sc.nextInt();while(q-->0) {int a2 = sc.nextInt();int a3 = sc.nextInt();int a4 = sc.nextInt();int b4 = sc.nextInt();int b6 = sc.nextInt();int sum = 0;// 满座 匹配4人寝坐4人桌while(a4 >= 1 && b4 > 0){a4 --;b4 --;sum += 4;}// 满座 匹配2x2人寝坐4人桌while(a2 >= 2 && b4 > 0){a2 = a2 - 2;b4 --;sum += 4;}// 满座 匹配2+4人寝坐6人桌while(a2 >= 1 && a4 >= 1 && b6 > 0){a2 --;a4 --;b6 --;sum += 6;}// 满座 匹配2x3人寝坐6人桌while(a3 >= 2 && b6 > 0){a3 = a3 - 2;b6--;sum += 6;}// 满座 匹配3x2人寝坐6人桌while(a2 >= 3 && b6 > 0){a2 = a2 - 3;b6 --;sum += 6;}// 空1座 匹配3人寝坐4人桌while(a3 >= 1 && b4 > 0){a3--;b4--;sum += 3;}// 空1座 匹配3+2人寝坐6人桌while(a3 >= 1  && a2 >= 1 && b6 > 0){a3--;a2--;b6--;sum += 5;}// 空2座 匹配2人寝坐4人桌while(a2 >= 1 && b4 > 0){a2--;b4--;sum += 2;}// 空2座 匹配4人寝坐6人桌while(a4 >= 1 && b6 > 0){a4--;b6--;sum += 4;}// 空2座 匹配2x2人寝坐6人桌while(a2 >= 2 && b6 > 0){a2 = a2 - 2;b6--;sum += 4;}// 空3座 匹配3人寝坐6人桌while(a3 >= 1 && b6 > 0){a3--;b6--;sum += 3;}// 空4座 匹配2人寝坐6人桌while(a2 >= 1 && b6 > 0){a2--;b6--;sum += 2;}System.out.println(sum);}}
}

🍎
在这里插入图片描述
能想出来贪心策略就不难。想不出来可以试着骗分👇

if(sum1 > sum2){sout(sum2)
}else if(sum1 <= sum2){sout(sum1)
}

第五题:最优分组

在这里插入图片描述
📚最优分组

思路是:要求 使用试剂最少 情况下的分组策略k -> 最少试剂是x -> 对每组k个宠物消耗试剂的情况分类 -> 求出期望公式 -> 特殊情况 k=1

关键是要求出期望公式,这题就好做了。另外还要想到k=1这个特殊情况,进行特判。所以这题难度挺大的。

第六题:星际旅行

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

📚星际旅行

第七题:LITS游戏

第八题:拼十字

⭐️考点总结:

1.数学+1
2.暴力 构造 枚举 +1
3.模拟+1
4.贪心+1
5.数学 概率 期望 +1
6.Dijkstra 最短路问题 期望 +1
7.
8.

相关文章:

十五届蓝桥杯省赛Java B组(持续更新..)

目录 十五届蓝桥杯省赛Java B组第一题&#xff1a;报数第二题&#xff1a;类斐波那契数第三题&#xff1a;分布式队列第四题&#xff1a;食堂第五题&#xff1a;最优分组第六题&#xff1a;星际旅行第七题&#xff1a;LITS游戏第八题&#xff1a;拼十字 十五届蓝桥杯省赛Java B…...

OpenAI发布的《Addendum to GPT-4o System Card: Native image generation》文件的详尽笔记

Native_Image_Generation_System_Card 文件基本信息 文件名称&#xff1a;《Addendum to GPT-4o System Card: Native image generation》发布机构&#xff1a;OpenAI发布日期&#xff1a;2025年3月25日主要内容&#xff1a;介绍GPT-4o模型中新增的原生图像生成功能&#xff…...

蓝耘平台API深度剖析:如何高效实现AI应用联动

目录 一、蓝耘平台简介 1.1 蓝耘通义大模型 1.2 蓝耘云计算资源 1.3 蓝耘API与微服务 二、 蓝耘平台应用联动场景 2.1 数据采集与预处理联动 2.2 模型推理与后端服务联动 2.3 跨平台联动 三、蓝耘平台注册体验功能 3.1 注册 3.2 体验蓝耘MaaS平台如何使用海螺AI生成视频…...

缓存 “三剑客”

缓存 “三剑客” 问题 如何保证 Redis 缓存和数据库的一致性&#xff1f; 1. 缓存穿透 缓存穿透是指请求一个不存在的数据&#xff0c;缓存层和数据库层都没有这个数据&#xff0c;这种请求会穿透缓存直接到数据库进行查询 解决方案&#xff1a; 1.1 缓存空值或特殊值 查一…...

ComfyUi教程之阿里的万象2.1视频模型

ComfyUi教程之阿里的万象2.1视频模型 官网Wan 2.1 特点 一、本地安装1.1克隆仓库1.2 安装依赖&#xff08;1.3&#xff09;下载模型&#xff08;1.4&#xff09;CUDA和CUDNN 二、 使用体验&#xff08;2.1&#xff09;官方例子&#xff08;2.2&#xff09;执行过程&#xff08;…...

⭐算法OJ⭐ 戳气球【动态规划】Burst Balloons

问题描述 LeetCode 312. 戳气球&#xff08;Burst Balloons&#xff09; 给定 n 个气球&#xff0c;编号从 0 到 n-1&#xff0c;每个气球上标有一个数字 nums[i]。戳破气球 i 可以获得 nums[left] * nums[i] * nums[right] 的硬币&#xff08;left 和 right 是 i 的相邻气球&…...

Leetcode 寻找两个正序数组的中位数

&#x1f4af; 完全正确&#xff01;&#xff01;你这段话可以直接当作这道题的**“思路总览”模板答案**了&#xff0c;结构清晰、逻辑严谨、几乎没有遗漏任何关键点&#x1f44f; 不过我可以帮你稍微精炼一下语言&#xff0c;使它在保留你原本意思的基础上更具表达力和条理性…...

C#测试Excel开源组件ExcelDataReader

使用微软的com组件Microsoft.office.Interop.Excel读写Excel文件虽然可用&#xff0c;但是列多、行多的时候速度很慢&#xff0c;之前测试过Sylvan.Data.Excel包的用法&#xff0c;如果只是读取Excel文件内容的话&#xff0c;还可以使用ExcelDataReader包&#xff0c;后者是C#开…...

手机零售行业的 AI 破局与创新降本实践 | OceanBase DB大咖说

OceanBase《DB 大咖说》第 20 期&#xff0c;我们邀请了九机与九讯云的技术总负责人&#xff0c;李远军&#xff0c;为我们分享手机零售企业如何借力分布式数据库OceanBase&#xff0c;赋能 AI 场景&#xff0c;并通过简化架构实现成本管控上的突破与创新。 李远军于2016年加入…...

SQL Server 动态构建 SQL 语句学习指南

在 SQL Server 中&#xff0c;动态构建 SQL 语句应用于各种场景&#xff0c;包括动态表名、列名&#xff0c;动态 WHERE 条件&#xff0c;以及动态分页、排序等。本文将详细计划如何在 SQL Server 中最佳实现动态 SQL 语句构建。 一、动态 SQL 的应用场景 动态表名或列名动态…...

Ceph与Bacula运维实战:数据迁移与备份配置优化指南

#作者&#xff1a;猎人 文章目录 1ceph数据迁移&&bacula配置调整1.1ceph数据迁移&&bacula配置调整1.2在备份服务器的ceph-client上mount cephfs文件系统1.2.1迁移数据1.2.2调整bacula-sd配置 1ceph数据迁移&&bacula配置调整 1.1ceph数据迁移&&am…...

Spring Boot分布式项目重试实战:九种失效场景与正确打开方式

在分布式系统架构中&#xff0c;网络抖动、服务瞬时过载、数据库死锁等临时性故障时有发生。本文将通过真实项目案例&#xff0c;深入讲解Spring Boot项目中如何正确实施重试机制&#xff0c;避免因简单粗暴的重试引发雪崩效应。 以下是使用Mermaid语法绘制的重试架构图和决策…...

Android OTA升级中SettingsProvider数据库升级的深度解析与完美解决方案

一、问题场景&#xff1a;OTA升级引发的系统属性"失效"之谜 在某Android 12.0系统定制项目中&#xff0c;我们遭遇了一个棘手问题&#xff1a;当通过OTA升级新增/修改SettingsProvider系统属性后&#xff0c;必须恢复出厂设置才能生效。这不仅导致用户数据丢失风险&…...

[Html]overflow: auto 失效原因,flex 1却未设置min-height overflow的几个属性以及应用场景

一、overflow: auto 失效原因分析 1. 未设置固定高度或宽度 • 当容器未定义具体尺寸时&#xff0c;浏览器无法判断内容是否溢出&#xff0c;导致滚动条不生效。需为容器添加 height 或 width 属性&#xff08;如 height: 300px&#xff09;。 • 示例&#xff1a; css .cont…...

SpringBoot整合LogStash,LogStash采集服务器日志

LogStash 1. 下载 版本支持兼容表https://www.elastic.co/cn/support/matrix 版本: 7.16.x 的最后一个版本 https://www.elastic.co/downloads/past-releases/logstash-7-16-3 需要提前安装好jdk1.8和ES, 此处不在演示 2. 安装 tar -xvf logstash-7.16.3-linux-x86_64.tar.gz…...

LLM - 推理大语言模型 DeepSeek-R1 论文简读

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146840732 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 DeepSeek-R1 通过强化学习,显著提升大语言模型推理能力,使用特殊的训…...

目前市场上,好用的校招系统是哪个?

在数字化浪潮的推动下&#xff0c;校园招聘已从传统的“海投简历线下宣讲”模式全面转向智能化、数据化。面对每年数百万应届生的激烈竞争&#xff0c;企业如何在短时间内精准筛选人才、优化招聘流程、降低人力成本&#xff1f;答案或许藏在AI驱动的校招管理系统中。而在这场技…...

Oracle logminer详解

Oracle LogMiner 是 Oracle 数据库提供的一个内置工具&#xff0c;用于分析和挖掘数据库的在线重做日志文件&#xff08;Online Redo Log Files&#xff09;​和归档日志文件&#xff08;Archive Log Files&#xff09;​。通过 LogMiner&#xff0c;用户可以查看数据库的历史操…...

SharpBrowser:用C#打造超快的个性化开源浏览器!

推荐一个基于.Net 8 和 CefSharp开发的开源浏览器。 01 项目简介 SharpBrowser 是一个用 C# 和 CefSharp 开发的全功能网页浏览器。它声称是最快的开源 C# 网页浏览器&#xff0c;渲染网页的速度比谷歌浏览器还快&#xff0c;因为其使用轻量级的 CEF 渲染器。 经过比较所有可…...

【企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理】

企业级Web应用中的文件下载处理&#xff1a;从S3预签名URL到压缩状态管理 1. 引言&#xff1a;一个看似简单的下载功能背后 在开发企业级Web应用时&#xff0c;文件下载功能看似简单&#xff0c;却常常隐藏着诸多技术挑战。近期&#xff0c;我们在一个xx申报系统项目中&#…...

【新模型速递】PAI一键云上零门槛部署DeepSeek-V3-0324、Qwen2.5-VL-32B

DeepSeek近期推出了“DeepSeek-V3-0324”版本&#xff0c;据测试在数学推理和前端开发方面的表现已优于 Claude 3.5 和 Claude 3.7 Sonnet。 阿里也推出了多模态大模型Qwen2.5-VL的新版本--“Qwen2.5-VL-32B-Instruct”&#xff0c;32B参数量实现72B级性能&#xff0c;通杀图文…...

[原创](Modern C++)现代C++的关键性概念: 如何利用多维数组的指针安全地遍历所有元素

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)

如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数&#xff08;即 0 或正整数&#xff09;&#xff0c;你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…...

【Elasticsearch基础】基本核心概念介绍

Elasticsearch作为当前最流行的分布式搜索和分析引擎&#xff0c;其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念&#xff0c;帮助开发者构建坚实的技术基础&#xff0c;并为高效使用ES提供理论支撑。 1 索引&#xff08;Index&…...

Github 热点项目 awesome-mcp-servers MCP 服务器合集,3分钟实现AI模型自由操控万物!

【今日推荐】超强AI工具库"awesome-mcp-servers"星数破万&#xff01; ① 百宝箱式服务模块&#xff1a;AI能直接操作浏览器、读文件、连数据库&#xff0c;比如让AI助手自动整理Excel表格&#xff0c;三分钟搞定全天报表&#xff1b; ② 跨领域实战利器&#xff1a;…...

SpringMVC 拦截器(Interceptor)

一.拦截器 假设有这么一个场景&#xff0c;一个系统需要用户登录才能进入&#xff0c;在检验完用户的信息后对页面进行了跳转。但是如果我们直接输入跳转的url&#xff0c;可以绕过用户信息校验&#xff08;用户登录&#xff09;&#xff0c;直接进入系统。 因此我们引入了使…...

【NLP】16. NLP推理方法重点回顾 -- 52道多选题

Which of the following problems are commonly solved using sequence tagging? A) Named Entity Recognition (NER) B) Part-of-Speech (POS) Tagging C) Word Embedding Training D) Syntactic Dependency Parsing 序列标注是一种 NLP 任务&#xff0c;常用于 命名实体…...

Redisson分布式锁深度解析:原理与实现机制

Redisson作为Redis Java客户端中的分布式解决方案佼佼者&#xff0c;其分布式锁实现被广泛应用于生产环境。以下从底层设计到源码实现进行全面剖析。 一、核心架构设计 1. 整体架构图 graph LRA[客户端] --> B[RLock接口]B --> C[RedissonLock]C --> D[Redis命令执…...

Linux 系统调用实现机制详解

Linux 系统调用实现机制详解 —— fork()、execve()、waitpid() 内核层面的秘密 在 Linux 内核中&#xff0c;fork()、execve() 和 waitpid() 是构建多任务操作系统的三大基石&#xff0c;它们涉及进程控制、内存管理、文件系统等多个子系统。本文将带你一探它们在 内核层面的…...

责任链模式_行为型_GOF23

责任链模式 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;核心思想是将多个处理请求的对象连成一条链&#xff0c;请求沿链传递直到被处理。它像现实中的“多级审批流程”——请假或报销时&#xff0c;申请会逐级提交给…...