十五届蓝桥杯省赛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.树状数组 + 1

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

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

相关文章

多模态学习(八):2022 TPAMI——U2Fusion: A Unified Unsupervised Image Fusion Network

论文链接&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9151265 目录 一.摘要 1.1 摘要翻译 1.2 摘要解析 二.Introduction 2.1 Introduciton翻译 2.2 Introduction 解析 三. related work 3.1 related work翻译 3.2 relate work解析 四…

电脑屏幕亮度随心控,在Windows上自由调整屏幕亮度的方法

调整电脑屏幕的亮度对于保护视力和适应不同环境光线条件非常重要。无论是在白天强光下还是夜晚昏暗环境中&#xff0c;合适的屏幕亮度都能让您的眼睛更加舒适。本文中简鹿办公小编将向您介绍几种在 Windows 系统中调整屏幕亮度的方法。 方法一&#xff1a;使用快捷键 大多数笔…

AF3 OpenFoldDataset类looped_samples方法解读

AlphaFold3 data_modules 模块的 OpenFoldDataset 类的 looped_samples 方法用于 循环采样数据,确保数据能被不断地提供,适用于 PyTorch 的 DataLoader 在训练过程中迭代读取数据。dataset_idx 指定了当前要处理的数据集(即 self.datasets[dataset_idx]) 源代码: def loo…

lua表table和JSON字符串互转

--print("local ssxc{\n"..string.gsub(str,":","").."\n}") Utils {} ---------------------------------------------------------------------------------- -- Lua-Table 与 string 转换 local function value2string(value, isA…

请谈谈分治算法,如何应用分治算法解决大规模问题?

分治算法实战解析与前端应用指南 分治算法本质剖析 分治算法的核心在于"分而治之"&#xff0c;其工作流程可分解为三个关键阶段&#xff1a; 分解阶段&#xff08;Divide&#xff09;&#xff1a;将复杂问题拆分为若干个相互独立的子问题攻克阶段&#xff08;Conqu…

基于BusyBox构建ISO镜像

1. 准备 CentOS 7.9 3.10.0-957.el7.x86_64VMware Workstation 建议&#xff1a;系统内核<3.10.0 使用busybox < 1.33.2版本 2. 安装busybox # 安装依赖 yum install syslinux xorriso kernel-devel kernel-headers glibc-static ncurses-devel -y# 下载 wget https://…

Node.js 与 MySQL:深入理解与高效实践

Node.js 与 MySQL:深入理解与高效实践 引言 随着互联网技术的飞速发展,Node.js 作为一种高性能的服务端JavaScript运行环境,因其轻量级、单线程和事件驱动等特点,受到了广大开发者的青睐。MySQL 作为一款开源的关系型数据库管理系统,以其稳定性和可靠性著称。本文将深入…

Android学习总结之handler源码级

一、核心类关系与线程绑定&#xff08;ThreadLocal 的核心作用&#xff09; 1. Looper 与 ThreadLocal 的绑定 每个线程的 Looper 实例通过 ThreadLocal<Looper> sThreadLocal 存储&#xff0c;确保线程隔离&#xff1a; public final class Looper {// 线程本地存储&…

群体智能优化算法-算术优化算法(Arithmetic Optimization Algorithm, AOA,含Matlab源代码)

摘要 算术优化算法&#xff08;Arithmetic Optimization Algorithm, AOA&#xff09;是一种新颖的群体智能优化算法&#xff0c;灵感来源于加、减、乘、除四种基本算术运算。在优化过程中&#xff0c;AOA 通过乘除操作实现全局探索&#xff0c;通过加减操作强化局部开发&#…

广告推荐算法:COSMO算法与A9算法的对比

COSMO算法与A9算法的概念解析 1. A9算法 定义与背景&#xff1a; A9算法是亚马逊早期为电商平台研发的核心搜索算法&#xff0c;主要用于优化商品搜索结果的排序和推荐&#xff0c;其核心逻辑围绕产品属性与关键词匹配展开。自2003年推出以来&#xff0c;A9通过分析商品标题…

EasyExcel 数据字典转换器实战:注解驱动设计

一、场景痛点与解决方案 1. 问题背景 在 Excel 导入导出场景中&#xff0c;开发者常面临以下问题&#xff1a; 数据可读性差&#xff1a;数据库存储的字典值&#xff08;如 1、true&#xff09;直接导出时难以理解双向转换复杂&#xff1a;导入时需将用户输入的标签反向解析…

五种音频器件综合对比——《器件手册--音频器件》

目录 音频器件 简述 1. 扬声器&#xff08;Speakers&#xff09; 2. 麦克风&#xff08;Microphones&#xff09; 3. 放大器&#xff08;Amplifiers&#xff09; 4. 音频接口&#xff08;Audio Interfaces&#xff09; 5. 音频处理器&#xff08;Audio Processors&#xff09…

红宝书第二十九讲:详解编辑器和IDE:VS Code与WebStorm

红宝书第二十九讲&#xff1a;详解编辑器和IDE&#xff1a;VS Code与WebStorm 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、核心区别&#xff1a;编辑器与IDE 代码编辑器&#xff08;如VS Code&#xff09…

虚拟电商-话费充值业务(五)充值成功逻辑和网络异常重试逻辑

一、网络异常重试逻辑编写 如果在对接供应商的过程中出现了网络异常&#xff0c;我们需要做一个补偿机制&#xff0c;在任务类型枚举类&#xff1a;TaskTypeEnum中有一种业务状态码是针对远程调用失败的 步骤一&#xff1a;在对接供应商的方法&#xff1a;SupplierServiceImp…

从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.3.3低代码开发:快速构建行业应用(电商推荐与金融风控案例)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第四部分:工程实践与部署4.3.3 低代码开发:快速构建行业应用(电商推荐与金融风控案例)1. 低代码与AI结合的核心价值2. 电商推荐系统案例2.1 技术架构与实现2.2 性能…

Table as Thought论文精读

标题&#xff1a;Table as Thought: Exploring Structured Thoughts in LLM Reasoning 作者&#xff1a;Zhenjie Sun, Naihao Deng, Haofei Yu, Jiaxuan You 单位&#xff1a;University of Illinois Urbana-Champaign, University of Michigan 摘要&#xff1a; llm的推理…

ubuntu18 server版花屏问题

新搞了一台dellT150的塔式服务器&#xff0c;装的ubuntu18 server版。 开机后遇到花屏&#xff0c;或者卡在开机界面的问题&#xff0c;和售后技术沟通这个情况是ubuntu自带的显卡驱动包兼容问题。需要做如下设置&#xff1a; 解决&#xff1a; 1.开机&#xff0c;连续按下e…

【MySQL】理解MySQL的双重缓冲机制:Buffer Pool与Redo Log的协同之道

在数据库系统中&#xff0c;内存与磁盘的读写性能差距始终是需要解决的核心问题。当注意到Redo Log和Buffer Pool都采用"先写内存再刷盘"的设计时&#xff0c;一个自然的问题浮现&#xff1a;既然两者都需要维护内存数据并定期持久化&#xff0c;为何需要双重缓冲机制…

PMP考试改革解读:新题型+5A通关秘籍

2024年&#xff0c;项目管理协会&#xff08;PMI&#xff09;对PMP考试进行了重大调整&#xff0c;从考试形式、题型分布到知识领域均进行了优化升级。本文结合PMI官方公告与一线教研经验&#xff0c;深度解析改革要点&#xff0c;并提供针对性通关策略&#xff0c;助你高效冲刺…

【Django】教程-10-ajax请求Demo,结合使用

【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…