2016年第七届蓝桥杯决赛心得

时间:2021-10-23 13:58:52

这次比赛,成绩并不是太理想,虽然我是一个渣二本(河南农业大学,一听,种地的还学编程???),却金刚不可夺其志,毅然决然的报了A组C,学院不支持,最后倔着脾气自费报名了。省赛顺利通过,可是决赛只拿了一个国三。想想要总结一下这次的得失,可是感觉我应该从头分析一下自己的编程经历了,做一个短期的总结吧(大致是七个月)。

作为一个农村的娃子(之所以说自己是娃子,因为我希望自己始终保持着一颗童心),和千千万万农村的娃子一样,大学前,不知道啥是编程,更别提算法了。

大学后,我只是感觉自己对计算机充满了兴趣,可是并不是对他有太多的了解。只是停留在打打LOL,玩玩魔兽,对战一下红警,PK一下火影:究极风暴(我可是火影粉丝哦),另外经常光顾一下4399小游戏……我始终是一个初出茅庐的小孩子,啥也不懂。

我开始接触编程,起初并不感兴趣,并且认定我不会好好学习,所以一开学并没有学,加之我的苹果刚到第一天,我就花了五分钟把它KO.了,我那叫一个郁闷,自己开始琢磨如何装系统,因为不问不知道,一问吓一跳,重装双系统需要四百大洋,一向不抠门儿的我这次抠门儿了,毕竟想想自己五分钟就怼了四百,心里疼。

可是,我这是第一次接触IOS,一丁点都不懂,于是我问学长,学长给我了三个字,“找百度”,所以,我整整查阅资料花了两个星期,各种方案都试了,却没有一个方法真的可行(可能是网上的教程有些老了吧),没有办法,可是没有办法我也真得不舍得花钱去装。

陷入了僵局,我该咋办?继续查资料呗,终于,我又经过两天的查找,成功的做成了一个启动盘,并装好了IOS系统(接着又装好了win),当时,我那叫一个开心(毕竟啥也没见过,这芝麻大的事那时候就让我很开心了)。

这时大致是15年十月中旬吧,然后,开始学编程吧,学校都已经讲了两周编程课了,我却一节都没听,都睡过去了,怎么破呢?只好自学。

学编程,我首先要考虑的事是我用啥写?用啥运行?也就是我该用啥IDE,这可难坏我了,于是我加了一些技术群和苹果群,请教了一些人,他们都清一色的推荐我用Xcode,我也就听从了他们的建议,然而,不知为何,我的苹果商店下载Xcode一直失败,我也感觉自己很失败(后来知道是因为服务器在美国,在国内下载时需要好一些的网速,而我这坑爹的校园网,也有一些其他的原因),依然是请教一个技术群里的大神(如果有兴趣可以来这个群里看看,牛人挺多的,群号:367556880,当然这不是专门的算法群,但是可以拓宽自己的眼界),然后他们告诉我,可以去开发者中心下载,于是我又折腾了几天,才算是下载好,可是下载好后,我彻底蒙逼了,全洋宴,顿时我想换了……

我自幼英语极差,看着全洋的编译器,我怂。于是我用win系统尝试用VC6++写,可是我一用,我立马心凉了半截…我的心在滴血(现在看来,这个编译器虽然低级,但是对我们初学者有好处,我就因为没用过低级编译器,在比赛中吃亏了),这下,我又耽搁这了。

这时已经十月下旬了。

然后我一个朋友给我分享了一个我感觉是改变了我的方向的一个视频,为什么呢?那时候我都想放弃编程,开始学PS了,想走平面设计(后来事实证明这不是我的菜,没有艺术细胞),然后他给我了一个以Xcode为IDE的教学C的视频,我开始第一次真正意义上的学习C,这时候十月结束了,也就是这个时候,我开始爱上编程了,爱上Xcode了。

这时候,很多学长都说一句话:编程的精髓是算法。于是,我这么爱装逼的人,一定要学精髓,(后来发现,学长们都是说说而已,因为我们学校没有深入学习算法的),于是我就一步错步步错,走上了算法的不归路了。

用了一个月,我自学完了C语言基础,当然是仅限于算法层的,那些偏向应用层的部分我没有学习,然后自己开始接触算法训练题。和很多新手一样,一开始啥都不会,但是我可以很自豪的说,我在学C语言第二周就挑战鸡兔同笼以及39级台阶问题(现在看来特别水的题,那时候着实费了一番功夫才做出来),那时候,我只学到了循环语句而已。

然后我通过这两道题发现,自己的编程代码写出来既费时又一团糟,于是我注意到了两个问题:
1、编程习惯,命名规范问题;
2、遇见一丁点思路都没有的题,我该怎么办?苦思?还是……

这时候,我想,习惯都是从小养成最好,我不应该等自己养成坏习惯后再改,于是一开始我就查找各种命名规范,查到了匈牙利命名法和驼峰式命名法以及帕斯卡命名法,当时傻逼了,一看驼峰,好low的名字,不用;一看帕斯卡,英文名字,不感冒,不用;于是用起了匈牙利命名法,但是后来我又转成了驼峰式命名法,倒不是说匈牙利的不好,只是没有驼峰式优势大,事实证明,驼峰式的确使用率越来越高了(了解命名规范的简要规范:http://blog.csdn.net/f_zyj/article/details/51510085)。

至于第二个问题,我最后用一句话来说服了自己:学而不思则罔,思而不学则怠!那么什么方法学最快呢?我感觉就是在自己练题时,遇见不会的,多去看看别人写的博客还代码,这样子可以快速学到很多东西。

这时,我感觉,我是真正的开始要学算法了,此时十一月初。

然后,经过几天的边看边练,我发现,网上很多题都是用C++或者Java写的,C++居多,于是为了可以看懂别人的代码,我又花了半个月的空闲时间,学习了C++的语法基础,学到了多态。

接着又经过了一段时间的学习,沿袭着自己的方法搞,感觉挺好的。到了十一月中旬时,学校举行了蓝桥杯的校赛,为了给省赛选出选手,我信心满满的参加了(我们这一届虽然有几个有编程基础的人,但是那时我已经远远超过他们了),最后也顺利过了。

学校说,会学院出钱给我们参加省赛(300大洋呢),我们报名时,我发现,蓝桥杯分为A,B,C三组,我们学校我的专业对应的最低组别是B组,学校说让我们都报B组,我内心不服,为啥我们注定只能报B组?于是我想方设法找老师,申请报A组,然而老师不同意,于是又一个学长说,“你就这么看不起B组?…最好报B组,别不自量力,但是如果你真的想报A组,自己去跟团委老师说”。

于是,我就跟团委老师申请,然后因为老师不同意,我只好退一步说,我自费可以吗?然后老师就同意了,因为我态度十分坚决,金刚不可夺其志。

因为是自费,我连指导老师都没有(其实有没有都一样,因为老师并没有指导,只是挂个名字而已,但是也的确受到一些不错的老师的帮助和指引)。

这时,我已经开始了为省赛而奋斗,我要让他们看看,我不虚,我要刚起来。

接着,就到了寒假,我们学校有一个工作室在家属院那里租有房子,他们觉得我努力学习,我也想留校,于是我决定一方面学习PHP,以后为他们做一些后台的东西,一方面准备省赛(回到家里真的学不成),于是,我整个寒假,放假后,我在那个工作室宅了两周,然后25回家,初二就又来了郑州,寒假休息了七天,终于在一个月学完了PHP(只是学,没有实战经验,但是学习过程中,我对后台框架等等有了新的认识,提高了自己的认知)和数据结构,这时候我已经认识到,编程的精髓是算法+数据结构,算法也是每天坚持做题。

开学后(这学期我们主修课是Java,我不是太想学Java,但是为了增加见识和期末考好,我还是学了些许,学到了多态继承等等),大概是二月末,离省赛还有一个月,我狠狠突袭了一个月,到了三月二十号,终于在省赛中无惊无险的晋级了。

学院也不再质疑我的能力(其实我真的很水,只是学校太弱鸡了),学校一共晋级了五个,就我一个大一,然后学校又把培训的任务交给了我,让我带着他们准备国赛(我们学校到现在还没有一个正儿八经的算法学习的环境,培训都是临时申请的教室,还时不时被占,学院真得没有支持太多,一切革命靠自己,这时,我深切的认为,我们需要一个算法学习的环境,于是打起了今年国赛后申请实验室的想法),然后紧张无序的准备了两个月。

很快,到了五月底,我们由一个研究生带队去北京参加比赛。说实话,挺紧张的,因为A组的都是重点学校的人,像我这样的只学了七个月的二本渣渣应该不多吧。本来就是想着第一年我参加省赛试试水,为来年准备经验,的确,这次经验倒是有了很多。

五月二十八日,也就是昨天,不对,现在都凌晨了,应该是昨天的昨天,下午一点,我们到了北科大,那是我们的考场,貌似我们那里又是几乎就我一个A组,和省赛一样,因为考场是按学校分的,在北科大参加竞赛的差不多都是二本吧,就我一个A组,那叫一个无奈,就我一个神经病吧。

两点,准时入场,开始考试,我一上来就出岔子,我报告老师,无法解压试题,后来老师笑笑说,区分大小写(解压有一个密码,对大小写敏感),然后就正式开始了,打开第一题时,已经过了十分钟吧。这时,老师开示发面包和水还有一个瓶奶,我当时还高兴,这个比赛服务真好,后来我发现,其实这也是一个素质的考验吧。

由于我一开始昨天就出岔子,所以有些紧张,于是打开了矿泉水,三两分钟喝完了,然后控制不住自己,又喝了一瓶奶,这时我后悔啦,可是后悔也来不及了,规定一个小时内不准上厕所,然后就开始……你懂得。

此时的状态不好,刚好加上第一题题意不是太清楚,后来组委会又专门补充说明了,但是我已经在上边乱了心神,(憋得慌),所以用了一种特别多余的方法去解,最后还错了,于是我心慌了,感觉这次要挂,然后一到三点,我立马去了厕所,但是因为时间已经过去了一个小时,我却卡在了第一题,我着急,麻溜的方便完(绅士的说法,其实我还是更喜欢说尿完),又回去做题了,这时刚好组委会进行了A组第一题补充说明,然后我用了五分钟重新写,成功得到了答案。

接着看第二题,简直不像话,搞这么简单的题,我又用了三分钟轻松拿下,此时已经三点十一了,我心里稍微缓和了些,开始做第三题,代码填空,这个题也很简单,用了十分钟分析检验,做了出来。

然后开始搞第四题,因为这次考试波折太多,我情绪不是很稳定,长时间的失眠导致我注意力很难集中,第四题我想岔了方法,最开始想着暴力遍历,写到一半想起来这是程序大题,有时间限制,于是我改成了dfs,写到一半,我想会不会超时啊,于是又改成了bfs,然而当我写完了,一看要输出路径,差点吐血,只好又改成了dfs,这一来回折腾,修改代码,都知道,修改代码是一个灾难,于是我在比赛时碰见了这个灾难,我出了BUG了……

我想deBug,可是这个编译器我第二次用(第一次是省赛,那时写得很顺,没有任何bug出现,所以就没有把这个当回事,自己学编程七个月,几乎没有用过低级编译器,结果坑死在这里了),根本不知道怎么用,找到了deBug按钮,但是不知道具体怎么搞,在这个上面,整整折腾了四十五分钟,我一行一行的自己手动模拟运行,最终在剩余了一个小时二十分钟时搞出来了。

然后一看时间不够了,只能写一道题,然后就同时看了第五题和第六题,二选一,我选择的第五题,因为第五题是KMP,而第六题我拿不准,可能是链表吧,毕竟数据结构我只是学了一遍,并没有深入研究,原本打算暑假留校学数据结构和算法的。七个月的时间是不足以我深入学习这些高深的东西的。如果是链表,那我就真的选对了,因为C语言实现链表挺乏力的。

第五题我感觉自己应该是可以过的,可是跟据我自己的比赛成绩来看,想必是被KO.了,应该是只过了部分数据吧。

最后,时间无情的被用完了,我也放弃了挣扎了,想挣扎服务器也不给面子啊。

昨天下午,成绩出来了,A组别C/C++国三,不是很好,比赛时状况频发,一共去了四趟厕所……哎,诱惑也是一种考验啊,对于我这种把事物只分为能吃的和不能吃的人而言,比赛发水和奶已经是极大的诱惑了,竟然还发面包,我想静静。

总的来说,这次比赛给了我很多经验。

就算法准备方面,我感觉应该着重放在dfs和bfs上,因为这个每次都要考,兴许还是好几道,然后一定要学学KMP和Manacher算法,因为铁定会考一道字符串处理的问题,而字符串处理问题你把这两个算法搞定,那其他的就不在话下,考试时只要看懂题就能过,其他的基础的算法,都要会。难度最大的压轴题嘛,我感觉以后会越来越难的,链表、树、图什么的,如果你想多拿分,那就都看看吧。

另外,其他的方面的经验,最是宝贵了。
一,控制住嘴,尽量不要吃喝提供的那些东西,这也是一个考验;
二,控制住眼,不要过早的看后边的题,以免乱了思绪;
三,控制住手,不要帮助眼去看后边的题。

最后,最最最重要的是,一定要在竞赛前多熟悉竞赛提供的IDE,这个一旦出现问题,可以把你急死,不要问我为什么这么强调,我就是被急死了的那个人。

抱着枕头准备森!!!(希望这个可以对下一届参加蓝桥杯的新人提供一些帮助,我是个渣渣,但是渣渣也有一颗不安分的心,我要报A组!!!金刚不可夺其志,A组,继续刚,咱不怂!)