蓝桥杯2024javaB组省赛思路

本文分享了作者在蓝桥杯比赛中遇到的题目,涉及数字计算、算法设计(如斐波那契数列、分布式队列、动态规划)、编程语言选择(JavavsC++)以及解题技巧。作者强调实践和理解算法的重要性,鼓励参赛者独立解决问题。
摘要由CSDN通过智能技术生成

本人(省一)只是分享比赛时的思路,肯定会有错的漏的。

整体感想:比2023年的简单,没有像去年那样花里胡哨。

接下来我们看题目:

一.试题 

试题A

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

当时我看第一眼,20*1,24*1,20*2,24*2.....这不是轻松拿捏,第202420242024个不就是第202420242024/2*24;然后直接用BigInteger模拟大数,但是我用的机房的机子上的eclipse,结果直接报错了,然后我发现是数字202420242024那一行报错了,之后把过程换成了1001001*24288。得出的结果是2429042904288,稳了,直接提交。

结果我一考完刷视频刷到了这个,一看评论,我直接去了。。他并不是像我这样排列,而是从小到大排列,例子下面两个应该是140,144,结果肯定是不对了,第一题就没了。


试题B

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

对于这题,模拟,把数列S放在一个long数组里面,从10的7次方往0暴力,我改数据试了很多次,都是一个结果,这题应该对了。


试题C

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

这题我花了好长时间,半个小时左右才看懂,确实难理解,我在想这不是有多个队列吗,我直接用队列数组求出来不美滋滋。结果我一试,我靠java没有队列数组或者容器数组,最后只能无奈放弃(要是这题我能用c++的vector数组直接秒了)。


试题D

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

看到这题我一瞬间想到了田忌赛马那个,用贪心,然后我手算了一下发现不行,没写出来,大概是要用动态规划,没办法动态规划学的不好(呜呜呜)。


试题E

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

终于到这题了,这题也是被我浅浅拿下了应该。

这题用到的是高中数学,数学期望,先把期望的表达式算出来,然后把样例带入,之后左右取值检查,就可以了。思路很简单,还好记得期望怎么算(嘻嘻)。


试题F

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

这题明显的bfs,就是直接套模板,这题需要把bfs理解透,并且记住。然后根据题意改起来就很快了,但这题我不敢说拿了满分。


试题G

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

这题一秒放弃,题意很简单,但我之前没有做过像这样的题。


试题H

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

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

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

 

这题很容易想到暴力,O(N^{2})的复杂度,然后用上java快读,应该可以得一大半的分。

二.结语

我给大家分享自己的做题情况,就是给参加蓝桥杯的宝子们一点基准,要达到一个什么样的程度才能省一,心里目标会更加明确。

对于到底是用java还是c/c++写算法,这次蓝桥杯之后我有了新的看法,各有好坏。c/c++的语言当然更适合写算法,对比java,它有vector数组,然后在很多时候都比java快,而java在算法这里体现不出它面向对象的优势。但最最重要的一点,c/c++比java人数多得多,当然竞争压力就会更大,我们班有一个c/c++学的还不错的,还只是拿了个二等奖,所以我还是觉得用java参加蓝桥杯好。

说再多也没用,不如自己行动起来,去耐心地解决每一个问题,如果它快要把你压倒了,那就放下疲惫好好的休息一下,明日依旧整装待发!

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值