十五屆藍橋杯省賽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.pswp.cn/bicheng/75572.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75572.shtml
英文地址,請注明出處:http://en.pswp.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】教程…