从0基础到蓝桥杯C/C++B组国奖

今天主要是想给大家分享一下我是如何从大一0基础再到拿到蓝桥杯国奖的,也希望为0基础的小白想要入坑算法竞赛提供一些宝贵的经验。

入集训队

我本身是软件工程专业的学生,在入学的时候毫无基础,在学长学姐(好像没有学姐)以及老师的口中了解到了算法竞赛,并且知道了我们学校是有ACM协会的,当时对这些竞赛还没有什么概念,只是觉得可以提升自己便试着去了解了一下。一开始加入集训队是需要刷祖传题库的150道,当时啥都不会看到题都懵掉了,然后也没有题解,先是翻书学了C语言的基本语法,然后练习输入输出,ACM赛制对输入输出的要求是十分严格的,记得当时是做了十道不同格式的A+B才勉强对输入输出有些基本的了解。因为是0基础所以做起题来十分的费劲,反复的去问学长,然后也踩了很多很多很多坑,可能做一题就要花上一两个小时,在不断Wrong、Pre甚至是编译错误的折磨下才能辛苦的看到Ac。相信有在OJ做过题的同学们都会在看见绿绿的Ac后感受到那份激动,大概学习加上做题花了两个多月时间终于有了入队资格,当时对入队的执念是很深的,我们学校入队有两种方法,一个是在学校oj上刷足够多的题,或者在新生赛上取得不错的名次,当时我对自己是毫无信心的,就义无反顾的选择刷题入队了。事实上打新生赛的时候也感觉到自己的水准确实非常低,抱着入队的执念,我慢慢一道题一道题的刷,那时候一天大概只能做个3.4道题吧,闲暇的时间都在做题,记得舍友听见晚上我说梦话都是要打ACM,后来入队了,才发现,一切也没什么变化,继续在OJ上写题,继续被折磨,时而打打学长们组织的周赛。

新生赛

当时入门的算法书,看的是《啊哈!算法》也开始学习算法,这本书内容不难,但是基本涵盖了基本的算法思想,很适合入门看,慢慢的终于迎来了第一场比赛,那时候是学校举办的新生赛,学长为我们出题,先是打了两场热身赛,然后就是决赛,决赛大约是10道题目,5个小时,ACM赛制,这也是第一次打正式的线下赛,第一次体验罚坐(后面还有无数次),最后拿到了三等奖还是末尾,但是还是挺开心的,觉得自己的努力还是有所收获的。

从0基础到蓝桥杯C/C++B组国奖_第1张图片

进阶训练

由于学校OJ没有题解,于是转战洛谷和Acwing,这两个OJ各有好处,洛谷有入门题单非常适合新生去做,且它的题解十分丰富,很多代码技巧都是在看别人代码的过程中学会的,学会解读别人的代码也是十分重要的一个环节。Acwing好处是可以系统的学习算法,如果有条件可以付费买课程,我个人体验是非常好的,Acwing的评测器以及编译器给人的体验都是非常好的。在大一寒假的那段时间,我的学习旅程基本上都是在那里度过的。

迎来蓝桥杯

后来迎来了第一场比较大型的比赛,蓝桥杯,寒假刚结束虽然没有什么底子但是还是毫不犹豫的报名了。简单介绍一些蓝桥杯分为ABC三个组别,分别是A:985、211 B:本科 C:专科,这样分级的好处是,获奖比较容易,采取的是OI赛制,即赛后才能知道结果,当时报完名,离蓝桥杯开始还有大约1个多月,这段时间都在做往年的题目,有的人说蓝桥杯很水,其实只是因为获奖难度比较低,但是就题目来说无论是层次和难度我觉得都把握的非常好,即使编程大题不会,也可以写小数据拿点分,不像ACM那样疯狂罚坐,但是由于不能立刻知道结果,考验的更多是选手的细心,边界情况的考虑,条件判断的合理,如果说有ACM基础这些都是基本素养了。大部分人依旧AK不了编程大题,这里我讲一下我省一的做题情况,第一题出乎往年,考的是计算机基础知识,然后写了另外一道填空,以及压轴最短路径,编程大题第一题是水题,后面四道只写了模拟,甚至有一道背包问题直接爆0。就这样我拿着大概3道填空,以及两道大题的分数进入了省一,这已经非常出乎我意料了,但是由于疫情国赛也只能在学校打,这让我感到非常的可惜。省赛到国赛大约又有一个月的时间,当时课也比较多,我也只能晚上回去继续写写OJ在Acwing上看看课程。国赛是写了4道填空题,以及两道编程大题,剩下的骗了骗分就跑路了,最终拿到国赛二等奖的成绩,这给了我十分大的信心,也让家里人都高兴了一把,国赛一等奖其实是比较难拿的,毕竟大家都是各个省的省一,争取在大二的时候拿到吧!给大家看看奖状的样子,还是十分好看的。
从0基础到蓝桥杯C/C++B组国奖_第2张图片

给小白的学习路径

在学习的过程中我也是走了许许多多的弯路一路摸爬滚打到这里的,如果有想参加B组或者C组的同学我可以给出以下建议(A组我也没打过啊!!),对于0基础的小白来说我给出的建议是如果学校有相应协会优先入会,他们会带着你入门,如果没有去洛谷刷新手题单,不会就看题解,这一阶段成长是十分迅速的,配合书籍《啊哈!算法》学习基本算法思想,这时候就有了一定的算法基础以及语法基础,这样的水平足以在弱省的省赛中取得省三、省二。在进阶一步我推荐购买Acwing的算法基础课,配合着书籍《挑战程序设计竞赛》《算法竞赛入门经典》,如果把3者学会1/5,这时候拿个省一是比较轻松的。如果基本学会在国赛中取得国赛二等奖基本是没有问题的。我当时学会了Acwing的算法基础课程一半时候就去国赛了,至于国赛一等奖我暂时也没有打到,我目前在学习Acwing的算法提高课,然后日常打打CF和牛客等OJ的竞赛,我在看的书有《算法进阶指南》《信息学奥赛一本通》,我认为能讲算法提高课的内容学会皮毛,完全有资格冲刺国家一等奖了,无论哪个阶段,在学习中穿插多多参加比赛都是非常关键的。

写在最后

其实学习编程不可能是一蹴而就的,重要的是坚持,当我遇到困难时,我时常的觉得我是不是不适合走这条路,特别是训练赛垫底的时候,真的有些迷茫,担心自己的付出是白费的。但是慢慢的,我发现我应该享受这个过程,享受头脑风暴的过程,享受每次AC带来的喜悦,享受一次又一次的比赛,我发现从来就没什么需要坚持的,不过是热爱带领着我走到现在。

很多人好奇该如何训练所以又写了一篇备赛指南
备考当然要多多刷真题
第十二届蓝桥杯B组真题详解与考点总结

你可能感兴趣的:(软件工程大学生生活专栏,蓝桥杯,算法,蓝桥杯,竞赛入门)