2024蓝桥杯Java B组 复盘贴

本文涉及多个技术主题,包括编程竞赛中的策略分析、数学问题(如类斐波那契数列和循环数计算)、分布式系统的设计与操作、优化宠物病毒测试方案、图论在星际旅行和游戏遗迹分析中的应用,以及算法技巧如Floyd算法和逆序对计数。
摘要由CSDN通过智能技术生成

本人此次蓝桥战绩省一前十


  1. 小蓝和朋友们在玩一个报数游戏。由于今年是 2024 年,他们决定要 从小到大轮流报出是 20 或 24 倍数的正整数。前 10 个被报出的数是: 20, 24, 40, 48, 60, 72, 80, 96, 100, 120。请问第 202420242024 个被报出的数是多少?

分析:将20和24共同的倍数看成只是24的倍数,这样20的倍数和24的倍数就是交替的,答案就是202420242024/2*24


  1. 对于一个有 n 位的十进制数 N = d1d2d3 . . . dn,可以生成一个类斐波那契数 列 S,数列 S 的前 n 个数为 {S 1 = d1, S 2 = d2, S 3 = d3, . . . , S n = dn},数列 S 的 第 k(k > n) 个数为 ∑k−1 i=k−n S i。如果这个数 N 会出现在对应的类斐波那契数列 S 中,那么 N 就是一个类斐波那契循环数。 例如对于 197,对应的数列 S 为 {1, 9, 7, 17, 33, 57, 107, 197, . . . },197 出现在 S 中,所以 197 是一个类斐波那契循环数。 请问在 0 至 107 中,最大的类斐波那契循环数是多少

分析:模拟即可


  1. 小蓝最近学习了一种神奇的队列:分布式队列。简单来说,分布式队列包 含 N 个节点(编号为 0 至 N − 1,其中 0 号为主节点),其中只有一个主节点, 其余为副节点。主/副节点中都各自维护着一个队列,当往分布式队列中添加元 素时都是由主节点完成的(每次都会添加元素到队列尾部);副节点只负责同步 主节点中的队列。可以认为主/副节点中的队列是一个长度无限的一维数组,下 标为 0, 1, 2, 3 . . . ,同时副节点中的元素的同步顺序和主节点中的元素添加顺序 保持一致。 由于副本的同步速度各异,因此为了保障数据的一致性,元素添加到主节 点后,需要同步到所有的副节点后,才具有可见性。 给出一个分布式队列的运行状态,所有的操作都按输入顺序执行。你需要 回答在某个时刻,队列中有多少个元素具有可见性。

分析:模拟即可


  1. S 学校里一共有 a2 个两人寝、a3 个三人寝,a4 个四人寝,而食堂里有 b4 个四人桌和 b6 个六人桌。学校想要安排学生们在食堂用餐,并且满足每个寝室 里的同学都在同一桌就坐,请问这个食堂最多同时满足多少同学用餐?

分析:贪心模拟即可


  1. 小蓝开了一家宠物店,最近有一种 X 病毒在动物之间进行传染,小蓝为了 以防万一打算购买测试剂对自己的宠物进行病毒感染测试。为了减少使用的测 试剂数目,小蓝想到了一个好方法:将 N 个宠物平均分为若干组,使得每组恰 好有 K 只宠物,这样对同一组的宠物进行采样并混合后用一个试剂进行检测, 如果测试结果为阴性则说明组内宠物都未感染 X 病毒;如果是阳性的话则需要 对组内所有 K 只宠物单独检测,需要再消耗 K 支测试剂(当 K = 1 时,就没 必要再次进行单独检测了,因为组内只有一只宠物,一次检测便能确认答案)。 现在我们已知小蓝的宠物被感染的概率为 p,请问 K 应该取值为多少才能 使得期望的测试剂的消耗数目最少?如果有多个答案输出最小的 K。

分析:数学题,将式子列出来模拟即可。我写的时候用了BigDecimal在输入很大时应该超时,不知道对不对


  1. 小明国庆节准备去某星系进行星际旅行,这个星系里一共有 n 个星球,其 中布置了 m 道双向传送门,第 i 道传送门可以连接 ai,bi 两颗星球(ai , bi 且 任意两颗星球之间最多只有一个传送门)。 他看中了一款 “旅游盲盒”,一共有 Q 个盲盒,第 i 个盲盒里的旅行方案规 定了旅行的起始星球 xi 和最多可以使用传送门的次数 yi。只要从起始星球出 发,使用传送门不超过规定次数能到达的所有星球都可以去旅行。 小明关心在每个方案中有多少个星球可以旅行到。小明只能在这些盲盒里 随机选一个购买,他想知道能旅行到的不同星球的数量的期望是多少。

分析:Floyd 秒杀,但是输入是1000,O(n^3)超时


  1. 俄罗斯方块是一款风靡全球的游戏,在游戏中有多种方格图案,我们只关 注这四个经典的方块图案:LITS,如下图所示: LITS 这四种方块都是由四个相同大小的小方块组成的。 现在给出一副大小为 N × N 的格子图,每个格子上都有一个数字 0/1,如 果格子处的数字为 1 说明这个格子上有一个小方块,数字为 0 则没有。 你需要判断从这个格子图上是否可以找出 LITS 四个方块图案(每个方 块图案之间都是独立的,不存在不同的图案公用同一个小方块的情况)。其中 LITS 方块的形状旋转任意个 90 度都是合法的,但不允许翻转。

分析:唯一不会写的,想搜,但是超时


  1. 在 LQ 国神秘的古老森林,有一座被称为 “拼十字” 的神秘遗迹。据传, “拼十字” 是由古代文明建造的,它是一个巨大的石头结构,由两个巨大的矩形 交叉叠放在一起,形成了一个庄严而神秘的十字形状。这个遗迹被认为是连接 人类和神灵之间的通道,拥有神秘的力量和能量。 现在给出 N 个矩形,其中第 i 个矩形的长度和宽度分别问 li,wi,并且矩 形颜色 ci 为红 (0)/黄 (1)/蓝 (2) 中的一种。现在小蓝想知道在这 N 个矩形中有 多少对矩形可以 “拼十字”? 两个矩形可以“拼十字”的充要条件是:

    1. 两个矩形的颜色不同;

    2. 矩形 1 的长度严格大于矩形 2 的长度并且矩形 1 的宽度严格小于矩形 2 的宽度。

分析:一眼逆序对,开三个数组表示三种颜色,逆序对秒杀


  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
蓝桥杯2023年BC++省赛的题目包括了2个填空题和8个编程题。根据参赛者的博客\[1\],本届蓝桥杯的难度相较于上届有所增加,编程题的难度较大,而思维题的数量较少。参赛者在博客中提到了其中一个题目,即试题A:日期统计\[2\]。在博客中还提到了一种解题方法,即暴力枚举\[3\]。暴力枚举的代码如下: ```cpp #include <iostream> #include <cmath> #include <algorithm> using namespace std; const int total = 23333333; const double H = 11625907.5798; int main() { for (int i = 0; i < total / 2; i++) { double ans = 0; ans -= 1.0 * i * i / total * log2(1.0 * i / total); ans -= 1.0 * (total - i) * (total - i) / total * log2(1.0 * (total - i) / total); if (abs(ans - H) < 1e-4) { cout << i << endl; return 0; } } return 0; } ``` 以上是关于蓝桥杯2023年BC++省赛的一些信息。希望对你有所帮助! #### 引用[.reference_title] - *1* *3* [2023年第十四届蓝桥杯C++B复盘](https://blog.csdn.net/m0_46326495/article/details/130043563)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [2023第十四届蓝桥杯C++B题目回顾与参赛感想](https://blog.csdn.net/BinBinCome/article/details/130048888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值