2025年蓝桥杯Java大学A组游记

· · 生活·游记

写在前面

去年报的CA,题目难度略高,拼尽全力没有写完,还导致没有拍前面的题,导致某几题写挂了,喜提省二。

今年痛定思痛,报了个Java组(因为自己对Java还比较熟悉),赛前两周间歇性练了练Java,把一些简单的排序,TreeSet,TreeMap,Deque都熟悉了一遍。不过相较于C++,感觉用Java写算法题还是太繁琐了(感觉大部分是因为Java没有运算符重载)。所幸也就是打蓝桥杯的时候用用Java写题了,放平时肯定还是用C++.

这次的题目相较于去年简单了不少,本人也是2小时半写完,剩下的时间使劲测样例/对拍,感觉应该没多大问题,结果最后F题拼好数还是贪挂了(至今不知道这是什么神秘题目),还是菜了。希望最后还是可以进国赛吧。

题目

A.数位倍数

太简单了,略

B.2025

数位计数,也很简单,略

C.变换数组

bitCount这个函数直接在Java的Integer和Long类里面就有,怀疑是出题组故意这么命名的。。直接调用即可。O(nm \log A)A为数组中的最大数

D.最短距离

神秘贪心题目。直接对数组a, b排序,然后答案就是\sum\limits_{i=1}^n |a_i - b_i|。不会证明,手玩了几个发现是对的,随便测了几组数据就完事了。

E.冷热数据队列

简单模拟题。蓝桥杯也是出上模拟题了,向csp靠齐了是吧(bushi)。

上来读题的时候,还有点疑惑:如果要将一个页面塞到q_1,但是q_1, q_2全是满的,题目里好像没说啊?仔细看了看题才发现这种情况根本不存在。如果要将一个页面塞到q_1,那么这个页面只可能来自于q_1或者q_2,如果来自于q_2就把q_1尾部的页面淘汰到q_2首部即可。

这题肯定不能真的用队列,赛时我用了两个TreeMap相互映射,用一个timestamp记录第几次操作。每插入一次队列就++timestamp。时间复杂度O(m \log m)

F.拼好数

我认为是本次最难的一道题目(因为我写挂了只能拿6分)。上来还在纳闷为啥n \le 1000,我直接贪不就完了,后来发现自己的贪心应该错在了最后一步(这里借用题解的一句话):

对于只有 23 的情况,有一个上界是(3c_3+2c_2)/6,枚举两个 cnt 的余数发现是紧的。

我直接先匹配322,再33,再匹配222了。寄。

G.甘蔗

写了个O(nm \max(a_i))的dp。2.5\times 10^8在本地测了好几次都是0.5s通过,希望交上去不会挂。

H.原料采购

H题居然没考树的东西。简单反悔贪心O(n \log n)。本地写了个O(n^2)暴力,拍了几千组样例感觉问题不大。

写在后面

本人是一名大二才开始的acmer,起步比别人晚了一亿年,但是这一年多也付出了非常多的努力,希望有一个好的结果!