赞
踩
两年征战蓝桥,惜败来年再战。
第二次参加蓝桥杯,水了个国三,虽然有点不满意,但比去年省二好了一点点。
第十一届蓝桥杯增加了Python组,正好我也入坑了Python,就直接试水了,Python不分ABCG等级,感觉省赛就和国赛差不多了,都是全国排名。省赛大概做了七八道题,最后俩题一题暴力骗分一题直接没看,提前半小时离场,饿了,拿了个一等奖,国赛感觉题目也不是特别难,好好做了五道,估计错了一些,大题好几个直接骗分,没骗到多少,又提前半小时撤了,不为别的,还是饿,只拿了个国三。
先来吐槽几点吧:
吐槽归吐槽,改变你所不能接受的,接受你所不能改变的。
吐槽完了之后,再回答几个问题,有粉丝私信也有学弟学妹问的,总结下来就是:
在回答问题之前,先放一个我们工作室的学习路线:http://alexking.site/learn,待会说的内容在这里都有涉及。
算法是一个超脱于编程语言的存在(当然你需要先学一门编程语言),它更多的是一种思维方式,比较类似于智力题或者数学题,所以学习算法和学习数学的套路是一样的,除了智力超群的大佬存在之外,小白更多的是通过刷题来积累经验。
一开始可以先从简单的题目入手,就拿蓝桥杯举例,可以先去把历年真题中,省赛的第一二题做了,大多都是签到题,没有涉及到算法和数据结构,一方面感受一下真题,另一方面把自己的语言基础打牢固,熟悉各种API操作。
接下来就要系统的学习算法和数据结构了,这个阶段看书学习会比较好,而且有很多优秀的参考书籍。
C组推荐《信息学奥赛一本通》
B组推荐《挑战程序设计竞赛》
A组推荐《算法竞赛入门经典》
基本上把书看下来之后就差不多算入门了,如果看书看不下去了也可以看看视频,推荐一个贼牛逼的教程,左神算法,在Matrix工作室学习路线算法组的第三模块,如果过期了可以私信我。
算法和数据结构学完之后就可以开始刷题了,准备蓝桥杯无非就是刷题嘛,除去签到题不说,至少得从递归开始刷吧,一般蓝桥杯第三四题就是递归,或者是深搜,说白了也是递归。
一开始刷题是一个痛苦的过程,因为看书和看视频无非就是搬砖,照本宣科把别人的代码搬过来,但刷题就是要自己造轮子了,有个同学问过我一个问题:“我看别人写的代码我都能看懂,但自己就是想不到,写不出来。”
这种情况我之前也遇到过,一看都懂,一写就废,在练递归的时候尤为明显,一道题怎么想都想不出来,但一搜题解,看两眼就恍然大悟,痛恨自己这么简单怎么就没想到呢,然后关掉题解开始自己写,写完之后还是跑不出来,心想不可能啊,改来改去还是不行,万般无奈只能再次打开了题解,一行一行的对比发现没啥不一样啊,不就是变量名我改了一下吗,百思不得其解之后终于放弃治疗,算了,复制过来能运行就行,起码思路我看懂了。
我相信很多人在学算法的时候都会经历这么一个过程,并且大部分人都倒在了这里,之前担任算法组组长的时候跟组员就聊过这个,几个同学表示:这个过程太让人挫败了,感觉自己不适合学算法。
确实,这一段路就像一个大沼泽,怎么都走不出去,要想挺过这个阶段最重要的就是要有信心和毅力,脚踏实地的刷题,一道题花的时间再长也没关系,只要你掌握了就好,你刷的每一道题就是成功路上的一块砖,一小步一小步的往前走,总有一天能够走出泥潭。
蓝桥杯官网的练习系统其实是有真题的,但是比较少,并且都是编程大题,推荐这些题目在最后比赛前一周用来刷,体验一下评测系统的标准和输入输出处理。
那真正的历年真题归档呢,可以去我的GitHub算法仓库里找,这里有我整理好的每年真题,省赛国赛各个组别都有,我做过的题目也会提供一份代码,仅供参考,后续我会配备各种语言的题解和代码,也欢迎大家Star和Pull Requests。
蓝桥杯的真题还是蛮多的,我们来算一下,省赛10道题,以前国赛6道题,现在也是10道题,咱们也按10道题来算,那就是20道题,不算今年新开的Python,C/C++和Java各分ABC三组,那就是60道题,除去重复的题目,然后再加上蓝桥杯官网的练习系统试题集和其它的拓展题,五年真题的话也差不多300道,与其说真题刷一道就少一道,不如说你能刷完再说吧。
所以,如果你要准备蓝桥杯的话,也不用找其它的题目去练了,直接刷真题就行了,足够,管饱。
至于到底要刷那个组别的题,建议是搞一个级别的,比如你报名的是C组,那你在入门的时候可以刷C组的题,比赛前一个月开始刷B组的题,以此类推,B组刷A组的,A组刷研究生的,研究生刷ACM的,这样真正比赛的时候再看自己组的题,那就是降维打击了。
省赛每个组别设置一、二、三等奖,比例分别为10%、20%、30%,总比例为实际参赛人数的60%,零分卷不得奖。省赛一等奖选手获得直接进入全国总决赛资格。国赛根据相应组别分别设立特、一、二、三等奖及优秀奖。在决赛奖项设置中,每个组别设置特等奖1名,一等奖不高于5%,二等奖占20%,三等奖不低于25%,优秀奖不超过50%, 零分卷不得奖。
所以省赛差不多做出来四五道题就是一等奖的水平了,国赛做出来四五道题差不多是二等奖,历年蓝桥杯的真题要是都能做完我估计那妥妥的是国一甚至国特。
软件类比赛学生以个人为单位参赛,比赛科目包括C/C++程序设计、Java软件开发、Python程序设计,答题形式为闭卷答题。985、211本科生只能报大学A组,所有院校研究生只能报大学A组,其它院校本科生可自行选择报大学A组或大学B组,高职高专院校可报大学C组或自行选择报任意组别。
所以首先要根据自己的学校水平选择相应的组别,建议本科大一零基础的同学可以报B组或者C组,大二有基础的同学可以报A组。
其次是编程语言的选择,C和C++是在一起的,一般都是C++(string和STL比较香),但是语言的学习周期比较长,没有基础的话光学C语言就得一个多月,再把C++看看又得小半个月过去了,然后还得看算法和数据结构,最后还得刷题,总的来说除非你又C/C++的语言基础,不然小白而且时间紧的话C/C++组不是一个明智的选择。不过C/C++确实适合用来学算法,很多教材和题解都是用C/C++来实现的,如果时间可以的话,还是建议用C/C++来学算法。
Python和Java的话就差不多了,Python的入门要比Java简单一点,但用Python来做算法时间复杂度不好估计,直接使用封装好的方法很容易导致超时,所以如果不是特别钟爱Python的话建议还是用Java,并且Python组的比赛还不是特别完善,期待明年会更好。
好了,今天的分享就到这里,这是我第二次参加蓝桥杯了,因为实习工作和准备其它的比赛导致没有全身心投入到蓝桥杯中,还是比较遗憾的,期待明年能拿到更好的成绩吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。