本篇攻略面向的对象为 只有语言基础,在竞赛弱省 且 院校普通的同学。
一位菜鸡的蓝桥杯弱省B组保奖攻略
1. 前言
为了不让大家的300块钱打水漂,我写下这一篇保奖攻略。
作者在第十五届蓝桥杯“荣获”陕西省B组省级三等奖,根据自己的经验来看,弱省B组获得省三并不难。
说说我获得省三时具有的知识:
c语言基础
数据结构基础
双指针法
大致知道有什么算法
……
没了?
没了。
是的,省三就只需要这一点点基础。
回顾我的比赛经历,当时什么算法都不会,大一下学的《数据结构》其实理应对竞赛有帮助,但由于我并没有经过什么训练,数据结构里讲过的算法根本不能复现,在实际比赛中也就没有起到作用。
2. 蓝桥杯的注意事项(本段内容复制粘贴自这里)
伊始,我们先要讲一下蓝桥杯相关的注意事项。(敲黑板)
- 省赛一等奖参加决赛,其余省赛奖项无法进入决赛。
- 比赛时长 4H.
-
个人赛,一人一机,全程机考。OI赛制(就是和高考做卷子一样,在考试结束前不知道正确结果是啥)
-
答题过程中无法访问互联网,但可以查帮助文档,当然这个东西学校的机器没直接给你,你需要去题库文件夹里找。帮助文档是用来在你忘记某个语句的语法怎么写的时候来做参考的。
-
学校的机器编译器环境就给了DEV C++,所以需要提前适应这个编译器
- C/C++的语法要求是C++11的要求(具体细节去网上查)
题型↓
- 结果填空 把答案直接通过网页提交,不要书写多余的内容,不要书写多余内容,不要书写多余内容!
- 程序设计题:。20%∼40% 是弱测试数据,其他是强测试数据。题量大、时间紧张,难题往往不会做或来不及用高效算法编码,此时可以用暴力方法编程得弱测试数据的分值
3. 怎么拿到省三的???
众所周知,蓝桥杯是一个水赛(bushi
由于其极高的获奖率(一二三等奖获奖率分别为10%、20%、30%)
以及较低的题目难度,蓝桥杯也被大家亲切的称为“比较简单的算法竞赛”(圈钱杯)
众所又周知,陕西是竞赛弱省,并且我参加的组别为B组(普通本科组),获得省三真的是做对三四道题(拿30+分就够了)
不过,近两年的蓝桥杯题目难度有所上升,其在难度上的诟病也稍有减少。
回归标题内容,我是怎么拿到省三的?
根据回忆,我在正式比赛时一共做对了2.5~3.5道题,分别为第一题,第二题(不一定做出来了)第三题和第四题的部分(暴力)。水平相当差,做出来的题也不难,当时具有的的知识只有语言基础,模拟的功底,以及双指针法。将自己能做的题都尽力做了(其实还有一个小插曲,日后再说)便获得了省三。
4. 如何准备才能到达省三的水平?
第一阶段:语法基础及模拟
从现在开始,打开洛谷,注册账号,从题单广场的【入门1】顺序结构开始做题。一直做到【入门3】循环结构结束,一共在60道题左右。
- 每个题单约有一两道的题是需要学习了一定的算法知识(高精度等)才能解决的,可以暂时跳过。
- 目的是复习基础语言,以及能够完成简单模拟(题目说什么你就用代码模拟做什么)。
- 熟练掌握这一部分大致能够答对第一题(填空第一题)以及第三题(程序设计题第一题)。
完成这一阶段的训练后,其实你就已经具备了“有机会拿到省三”的能力。(需要状态相当好,会的题全做出来,并且考试时能模拟出来还没学过的题型,以及一点点运气)
(我去年比赛时的水平要比这略高一点,但高不了太多)
第二阶段:算法入门
“求其上者得其中,求其中者得其下,求其下者无所得”
“有机会拿到省三”并不意味着你能拿到省三,实际上,但凡这两道题目难上一点,考一个基础算法,只凭借简单的模拟是无法做出来题目的。
完成之前的内容之后,你已经熟练掌握了语言基础,接下来,我推荐这位up主:一只会code的小金鱼的视频来入门算法。
(Q:为什么不去看大雪菜(acwing作者)的视频?A:结合我自己还没入门时的经历来看,大雪菜讲的通常是代码模板,但是此时作为小白的我还不太会写算法题,代码模板不知道原理也就吸收不进去,个人认为大雪菜的视频需要等小白进阶后才能理解)
路径1:你需要去学习视频中的二分查找,双指针+前缀和的相关内容,并且同步跟着这位up主做题。将视频看完(包括知识点课后面几集的习题课),题目做完后,你对“算法”二字就会有了一定的了解,并且很多用 for 循环暴力 O(n) 的做法时间复杂度可以简化到 O(1)。
路径2:你需要去学习他的DFS,BFS的知识。在学习完这两大类的知识后,你会学会除了for循环之外的另一种“遍历”方式。并且明白:(本校)网络工程专业的课程设计的原理是这样的!走迷宫类问题原来是这么解决的!(我也是从这里感受到算法之美的)。
你可以选择按照up主讲课的顺序(从路径1学到路径2)或者从路径2开始学到路径1(个人更推荐这一条,可以让你更早的领略算法之美)。
学至此处,获得省三甚至以上奖项基本上是板上钉钉的事情了。
第三阶段:算法进阶
学过DFS之后,可以参照这个视频,按照DFS->记忆化搜索->DP的方式来过渡到动态规划。
动态规划(DP)一直是蓝桥杯考察的重点,学习完动态规划后,你就有了晋级省一,甚至是国赛获奖的水平。
到了这一阶段,你对算法已经有了较为深刻的了解,其它算法知识也能在各路up主老师的“耳濡目染”下了解到他们的相关思想。相信你在之后的算法学习之路上也可以自己走了。
由于本人目前的水平并不比我想要写的“算法进阶”高多少,在算法学习这条道路上也还在摸索,或许等到明年,我的水平再进一步的时,会把这部分补全。
永远记住:“尽信书不如无书1。”本文策略未必适合所有人,在掌握基础算法思想后,探索符合自身思维特点的学习路径才能真正突破竞赛瓶颈。
5. 后记(一些无用的碎碎念)
今天(2月28日)距离考试还有43天,(相信你从未打过如此富裕的仗)种一棵树最好的时间是十年前,其次是现在。
相信
星辰大海终将抵达,你的代码正在书写传奇!
写这篇博客的直接原因是有同学来问了一下我这个菜鸡该如何备考蓝桥杯,我想着“反正最近不是在写博客,那就稍微总结一下我认为好的学习路径吧”
只是没想到一下写的还挺多。
最近真的感觉自己太菜了,身边很多人都很优秀,只能加倍努力希望自己不被甩开。
真诚的希望这篇博客能成为你算法学习之路上的指引之一。
本文的博客地址:https://marlin-phone.github.io
如果你能来我的 Github 点一下 Follow ,或者看看有没有感兴趣的项目给它点一个 star 的话,我将无比感激(虽然我现在还没有做过项目,但没准以后会有呢)!
-
《孟子·尽心下》云:”尽信书,则不如无书”。竞赛进阶的本质,是建立算法思维与工程实践之间的独特映射体系。愿诸君在蓝桥征途上,既善用攻略,更超越攻略。 ↩