A.序章
自己对算法并不擅长,跟ACM选手比更是相差甚远,但是确实比较喜欢算法,喜欢一些经典有趣的算法,太难的我目前可能需要花费很多时间,所以暂时不打算接触ACM级别的一些算法思想和模板。听说蓝桥杯刚好适合我这种了解一些算法,喜欢算法,但并不打算学习很难的算法思想的人。所以就报了名,当前自己并不是什么有算法天赋的选手,所以当然不能裸考,于是前段时间把往届的7年真题做了一下,下面是我的一些记录,包含了所有题的解析。有几个我暂时不太懂了就没能解释清楚,但是找了大佬的AC代码。
关于这些代码和解析的由来:
- 一般的题都是自己做过的,并且敲出了代码。
- 有些题可能觉得我的思路不太好的,参考了蓝桥杯官方培训给出的代码和思想。
- 还有一些题,自己并不是很会,于是找到了一些能够AC的代码,并加入了自己的理解,一般的都给出了出处,忘给出出处的请私聊我添加。
B.感受
做了7年的真题,我也谈谈我对蓝桥杯的一个感受吧。
- 必须承认的事实是,难度比起ACM确实是远远不足,很多题是可以暴力做出来的,编程题也可以通过普通的暴力和遍历拿到一部分分数。
- 虽然如此,但是它也有它好的地方。
- 喜欢算法,但不想太过深究的,真的是一次很好的历练机会。里面基本上还是包括了一些常见的算法思想的,dp,递归,DFS,BFS,二分,快速幂等等,也保包含了一些常见的数据结构,二叉树,线段树,图,堆等等。
- 题目的难度有一定的过度,整体难度应该说是中等,偶尔也会有一些ACM/OI大佬都很难做出来的题。如果自己没有能力拿到全部的分数,又有什么资格说这比赛太简单了呢,事实上,我发现历年满分的选手也都是屈指可数,就连一些ACM选手也很少有能拿到满分的。
- 也是第一次参加这个比赛,不知道这个奖的含金量高不高,所以不做任何评判。
C.题型走向
再来谈谈自己对蓝桥杯这七年题型走向的看法吧。仅针对JavaB组
- 2019年以前,Java组一直都是有代码填空这个题的,2019之后就没有了,可能觉得这种题有些好猜了?确实,是可以根据上下代码,结合一些测试用例去猜出来。
- 2013-2017年,这5年,都是填空题数量居多,编程题一般只有3-4个,但是占的分数却很高,基本上编程题占到50%以上的分数。2018年后编程题数目逐渐多起来了。
- 我觉得还是编程题多一点要好些,更能体现选手的水平,不至于一个题没做出来而导致整个比赛的失败。
- 填空题前几年主要喜欢考全排列问题,最近几年喜欢考枚举。都需要很细心才行。填空的压轴难度一直在提升。
- 编程题逐渐朝算法优化上面转,压轴题需要一些特别的思维才能做出来。
- 总的来说,试题在往好的方向发展,往灵活的方向发展。
D.目录一览
- 以下是2013-2019年省赛七届赛真题解析的文章目录。
- 前面三篇篇幅有点大,后面的分开了。
- 上篇一般是所有填空类题目,下篇一般是所有编程类题目。
E.逐年分析
- 比赛时长都是4小时。
- 2013和2014年官网没有公布分数分布情况,其余全部取自官网。有分数的总分均是150分。
- 每年的总结在每一年文章的末尾。
- 代码及答案均经过了官方提供的所有测试点的测试,一般都是能保证100%分数的,如果有问题,请私聊我。
- 难度仅供参考。
2013
序号 | 名称 | 类型 | 考点 | 难度 |
---|
1 | 世纪末的星期 | 结果填空 | 日期API的使用 | ★ |
2 | 马虎的算式 | 结果填空 | 枚举 | ★ |
3 | 振兴中华 | 结果填空 | 递归 | ★★ |
4 | 黄金连分数 | 结果填空 | 大数类的使用 | ★★ |
5 | 有理数类 | 代码填空 | 构造器的理解 | ★ |
6 | 三部排序 | 代码填空 | 排序思想 | ★ |
7 | 错误票据 | 程序设计 | 简单数组应用 | ★ |
8 | 幸运数 | 程序设计 | 数组元素的挪动 | ★★ |
9 | 带分数 | 程序设计 | 全排列+check | ★★★ |
10 | 连号区间数 | 程序设计 | 区间问题 | ★★ |
2014
序号 | 名称 | 类型 | 考点 | 难度 |
---|
1 | 武功秘籍 | 结果填空 | 常识 | ★ |
2 | 切面条 | 结果填空 | 找规律 | ★ |
3 | 猜字母 | 结果填空 | 数组元素的挪动 | ★★ |
4 | 大衍数列 | 代码填空 | 常识 | ★ |
5 | 圆周率 | 代码填空 | 数学计算 | ★ |
6 | 奇怪的分式 | 结果填空 | 枚举+分数相等的判断 | ★ |
7 | 扑克排序 | 结果填空 | 带重复元素的全排列 | ★★ |
8 | 分糖果 | 程序设计 | 过程模拟 | ★★ |
9 | 地宫取宝 | 程序设计 | DFS+缓存优化 | ★★★★ |
10 | 矩阵翻硬币 | 程序设计 | 数学思维+大数开方 | ★★★★ |
2015
序号 | 名称 | 类型 | 分值 | 考点 | 难度 |
---|
1 | 三角形面积 | 结果填空 | 3 分 | 常识 | ★ |
2 | 立方变自身 | 结果填空 | 5 分 | 枚举 | ★ |
3 | 三羊献瑞 | 结果填空 | 9 分 | 枚举 | ★ |
4 | 循环节长度 | 代码填空 | 11 分 | 除法模拟 | ★ |
5 | 九数组分数 | 代码填空 | 15 分 | 全排列+check | ★ |
6 | 加法变乘法 | 结果填空 | 17 分 | 枚举 | ★ |
7 | 牌型种数 | 结果填空 | 21 分 | 全排列 | ★★ |
8 | 饮料换购 | 程序设计 | 13 分 | 过程模拟 | ★ |
9 | 垒骰子 | 程序设计 | 25 分 | 动态规划+矩阵快速幂 | ★★★★★ |
10 | 生命之树 | 程序设计 | 31 分 | 无根树应用 | ★★★★ |
2016
序号 | 名称 | 类型 | 分值 | 考点 | 难度 |
---|
1 | 煤球数目 | 结果填空 | 3 分 | 找规律 | ★ |
2 | 生日蜡烛 | 结果填空 | 5 分 | 枚举 | ★ |
3 | 凑算式 | 结果填空 | 9 分 | 全排列+check | ★ |
4 | 分小组 | 代码填空 | 11 分 | 代码分析 | ★ |
5 | 抽签 | 代码填空 | 13 分 | 递归 | ★ |
6 | 方格填数 | 结果填空 | 15 分 | 全排列+check | ★ |
7 | 剪邮票 | 结果填空 | 19 分 | 全排列+DFS连通块检查 | ★★★ |
8 | 四平方和 | 程序设计 | 21 分 | 哈希枚举优化 | ★★ |
9 | 取球博弈 | 程序设计 | 23 分 | 博弈框架+缓存优化 | ★★★★ |
10 | 压缩变换 | 程序设计 | 31 分 | 线段树+前缀和 | ★★★★ |
2017
序号 | 名称 | 类型 | 分值 | 考点 | 难度 |
---|
1 | 购物单 | 结果填空 | 5 分 | 常识 | ★ |
2 | 纸牌三角形 | 结果填空 | 11 分 | 全排列+check | ★ |
3 | 承压计算 | 结果填空 | 13 分 | 精度丢失问题 | ★★ |
4 | 魔方状态 | 结果填空 | 17 分 | 状态转换+BFS | ★★★★★ |
5 | 取数位 | 代码填空 | 7 分 | 递归 | ★ |
6 | 最大公共子串 | 代码填空 | 9 分 | 动态规划 | ★★ |
7 | 日期问题 | 程序设计 | 19分 | 枚举+日期判断 | ★★ |
8 | 包子凑数 | 程序设计 | 21 分 | 数论+完全背包 | ★★★★ |
9 | 分巧克力 | 程序设计 | 23 分 | 二分枚举优化 | ★★★ |
10 | k倍区间 | 程序设计 | 25 分 | 前缀和+枚举+数学思维优化 | ★★★★ |
2018
序号 | 名称 | 类型 | 分值 | 考点 | 难度 |
---|
1 | 第几天 | 结果填空 | 3 分 | 常识 | ★ |
2 | 方格计数 | 结果填空 | 7 分 | 代数几何 | ★ |
3 | 复数幂 | 结果填空 | 13 分 | 数值估计+大数类使用 | ★★ |
4 | 测试次数 | 结果填空 | 17 分 | 动态规划+极限思想 | ★★★ |
5 | 快速排序 | 代码填空 | 9 分 | 分治思想 | ★★ |
6 | 递增三元组 | 程序设计 | 11 分 | 前缀和+二分法 | ★★★ |
7 | 螺旋折线 | 程序设计 | 19 分 | 找规律 | ★★★ |
8 | 日志统计 | 程序设计 | 21 分 | 滑动窗口 | ★★★ |
9 | 全球变暖 | 程序设计 | 23 分 | DFS | ★★★★ |
10 | 堆的计数 | 程序设计 | 25 分 | 堆+乘法逆元 | ★★★★★ |
2019
序号 | 名称 | 类型 | 分值 | 考点 | 难度 |
---|
A | 组队 | 结果填空 | 5 分 | 枚举 | ★ |
B | 不同子串 | 结果填空 | 5 分 | 枚举 | ★ |
C | 数列求值 | 结果填空 | 10 分 | 大数末位处理 | ★ |
D | 数的分解 | 结果填空 | 10 分 | 枚举 | ★ |
E | 迷宫 | 结果填空 | 15 分 | DFS迷宫问题 | ★★★ |
F | 特别数的和 | 程序设计 | 15 分 | 枚举 | ★ |
G | 外卖店优先级 | 程序设计 | 15 分 | 过程模拟优化 | ★★ |
H | 人物相关性 | 程序设计 | 20 分 | 差分数+前缀和 | ★★★ |
I | 后缀表达式 | 程序设计 | 20 分 | 后缀表达式+数学思维 | ★★★ |
J | 灵能传输 | 程序设计 | 25 分 | 前缀和+数学思维 | ★★★★ |
F.写在最后的话
- 分析往年试题能够清楚这个比赛主要倾向于考察什么,但永恒不变的就是个人的编码能力,调试能力,算法思维,数学思维。
- 其实比赛最重要的不是拿奖,更不是看这个奖的含金量有多高,而是为比赛准备的过程中所学习到的知识。
ATFWUS --Writing 2021-2-2