第八届蓝桥杯个人赛赛后总结

 


前言:2017年5月27日,第八届蓝桥杯个人赛C/C++大学A、B、C组、Java大学A、B、C组共六个小组决赛在北京举行。对于此次比赛,有过欢乐也有过遗憾,原本没打算写赛后总结,但是指导老师要求我们进入决赛的同学各自发一篇赛后总结给他,我想了想,既然要写,还是好好写一下。

 

 


 

    记得去年是第一次参加蓝桥杯,报的组别是C/C++大学B组,那时的自己,几乎没有接触过任何算法,连一个简单的选择排序的概念都不知道。报完名后,原本打算寒假在家好好去准备一下,结果由于一些原因,对于算法的学习几乎没怎么弄。寒假过后,此时距离第七届蓝桥杯个人赛省赛还有不到一个月的时间,那时我计划着一个星期做五道算法题,准备即将到来的省赛,可是自己当时做题的效率几乎低的不行,遇到难一点的题目,花费四五个小时都无法解决,参考网上的解答,看的也是半懂不懂的样子。而且当时,自己还报名参加了互联网+、计算机设计大赛,刚好都挤在了这个时间段。那时真是让人头疼——时间不够用,算法基础太差,做训练题效率低,几乎没有什么收获。就这样,糊里糊涂的就去参加了第七届蓝桥杯个人赛省赛,结果连一个省赛三等奖都没有拿到。

 

     鉴于第一次参赛的惨痛经历,让我明白了一点:做任何事情务必要专注,要想达到相应的目标,就得付出足够的时间和精力

 

     今年是我第二次参加蓝桥杯,报的组别是相对简单一点的Java大学B组,这次参赛应该也是我最后一次参加。去年9月份,我所在专业开了算法这门课程,那时刚好顺着课堂把蛮力法、减治法、变治法、分治法、贪心法、动态规划法等基本算法系统学习了一遍,给我的感觉:算法真是一个很神奇的东西,不同的思想,其之间的时间效率和空间效率差别几乎是不能相提并论。在系统梳理了一遍相关算法的基本知识后,然后我就开始把算法老师布置的课程实验挨个认认真真的做了一遍,而且事后还感觉做的不够,还把隔壁班算法老师布置的课程实验也挨个认认真真的做了一遍。这样下来,让我对于一些基本算法思想和模块有了一个更加清晰的了解和认识。

 

      到了今年1月份,我就正式开始着手准备了今年的蓝桥杯比赛。首先,从《算法设计与分析基础》这本教材开始复习,那时指导老师刚好给我们布置了一个作业:使用埃拉托色尼筛选法求取素数问题、汉诺塔问题、比较选择排序、冒泡排序、合并排序、快速排序之间的时间效率;然后,我看了一下这三个问题,刚好对应教材上第2章、第3章、第5章的部分内容。因此,我就打算从教材的第一章开始,把每一章提出的经典算法和相关问题都挨个上机实现了一下,书上看不懂的就上网查查相关资料,就这样当刷完教材上所有问题后,已经到了3月初,期间还刷完了《编程之法面试和算法心得》。在刷书的过程中,我发现书上的思想讲解和相关代码真的是精辟,比网上绝大多数资料文章要讲的清楚多了,也让我心里对于编著出书的作者表示由衷的敬佩啊。

 

    3月初,开始刷蓝桥杯练习系统上面的题,由于已经初步掌握了相关算法基础,对于难题一天也能够完成两题左右,较简单的题一般能够完成十题左右,甚至更多。对于此次比赛准备收获较大的是3月8日晚上,观看了蓝桥杯官网邀请去年荣获C/C++大学B组和Java大学B组特等奖获奖选手指导老师的讲座。当时进行讲座的老师系统分析了一下蓝桥杯个人赛历年真题的考点,系统归纳如下:

对于省赛准备,重点攻克以下应用方法:

(1)枚举

(2)递推递归

(3)动态规划

(4)搜索

(5)回溯

      在这五种方法中,重中之重的方法在于搜索和回溯的应用,搜索包括DFS、BFS,更难一点的就是DFS记忆化搜索,至于回溯最好去了解一下八皇后问题,这样可以对于回溯了解的更加深刻。

 对于决赛准备,除却上面五点外,还要重点系统学习一下图论相关知识:

(1)DFS、BFS

(2)求割点或桥

(3)极大强连通分量

(4)拓扑排序

(5)最短路径

(6)欧拉回路

(7)最小生成树

(8)最大流、费用流

(9)二部图

      此时距离4月8号进行第八届蓝桥杯个人赛省赛刚好还有一个月的时间,那时蓝桥杯官网说在3月15日——23日期间进行一次模拟赛,用于熟悉比赛系统和相关题型以及难易度。抱着测试一下自己这段时间学习成果的想法,报名参加了这次模拟赛。在3月1日——21日期间,我一直在刷蓝桥杯官网练习系统上的习题,其中大部分习题都是水题,几乎没什么难度,大部分考点也是搜索题,做了难一点的题后,后面稍微简单点的题几乎不用思考。3月22日,上午8:00-12:00在宿舍参加了这次模拟赛,真的是整整做了四个小时,最后提交答案后,系统立马给出成绩,下载查看后——总成绩0分,求我当时的心里阴影。于是那天下午,立马开始进行题后分析:

(1)看题马虎,理解题意错误,导致耗费大量时间在徘徊审题,甚至感觉题目出的有问题;

(2)题目要求的基本输入输出,没有按要求来,在提交代码时,竟然忘记删除测试打印语句,导致原本可以拿满分的题目,结果拿了0分;

(3)前两周密集做的训练题一点含金量都没有,大部分都是水题,和比赛考题难度几乎不沾边。

    从这次模拟赛过后,我就决定开始刷历届省赛真题,不再做蓝桥杯练习系统上的习题,用真题来训练自己的审题能力以及相关算法的应用能力。就这样,开始了更加密集的刷题之旅,基本上是两天刷三套历届真题。在省赛前十天,指导老师还布置一些训练习题,在省赛前,除了完成第四届到第七届的省赛真题,还完成了指导老师布置的大部分训练习题。

 

    4月8日9:00-13:00在湖北第二师范学院进行了本次省赛,省赛共有十题,记得当时自己第二题、第三题、第四题应该是做错了,其中第四题时一个魔方相关问题,具体解决方法应该是DFS搜索,这题得分率应该是最低的;至于第三题隐藏了一个包袱,就是要进行度量单位转换,这个应该也是坑了不少同学;第二题是一个使用DFS进行全排列然后去重、去掉不符合要求的问题,这个记得好像是自己没有去重。对于后面的四道编程大题,第7题有关日期的问题没有去重,最后一题是使用暴力求解,整体就做成这样,这四题感觉也都是比较基础,基本都是枚举和DFS。当时考完后,感觉做的很一般,应该就是一个省二,哪知道5天后公布成绩,得了省一,排名还比较靠前,那时感觉非常开心。对于这次省赛,我个人感觉题型对于DFS搜索和枚举应用几乎占用了百分之八十的分数,其中得分点关键在于审题和DFS搜索运行次序的理解深度。

 

      4月14日到5月25日期间,正式开始了决赛备战,首先我把图论相关知识点系统学习了一遍,印象最深的是并查算法、TarJan算法求取割点、SPFA算法的应用。这些让我对于算法的魅力又有了一个新的认识,完成图论的学习之后,继续完成蓝桥杯练习系统中未完成的习题以及指导老师布置的训练习题,完成这些任务差不多到了5月10日。从5月10日到5月25日期间,正式开始刷历届决赛真题,从第二届到第七届的真题都刷了一遍,并分析了一下各届的考点,发现第二届-第四届题型及考点变化较大。第五届-第七届题型未变,但是题目的难度变化较大,考点也是变化较大。其中考点,让我感觉难度较大的是:博弈论、几何题应用(其中有精度要求)。

 

      这次决赛,共六题,两道结果填空题,一道代码填空题,三道程序设计大题。让我感觉略坑的是,它的第五题刚好考了一个博弈论的题目,求我当时的心里阴影。对于博弈论,我在准备过程中就只看过拈游戏类型的问题,其它类型的基本都没学过,当时和一学长聊天,谈到对于博弈论有系统的归类,如果系统学习后,对于博弈论这类题目还是很简单的,对于这题当时自己是按照示例结果推博弈思想,几乎是去碰的,不敢确定答案的正误,不过对于给出的示例数据都是能够通过。这次比赛的第一题是一个DFS搜索题,比较简单;第二题,是要开一个二维数组,来进行数据模拟,当时自己看了题没有信心在半个小时内做出来,就去做后面的题,到最后只剩下半个小时,再来做这题时,头脑一片浆糊,就没写出来,这也是我和一等奖的差距吧,伤心;第三题是一个打印树形结构题,考查递归调用顺序的思想,说白了也是DFS问题。第四题,是一个关于2进制到36进制转换的问题,这题官方给的题意有一点问题,在考试的过程中,监考老师还特地说明了一下,这题也不难;第六题,考查的是一个1—10000的区间集合求并集的问题,这题虽然也写了,感觉最多应该只能拿到百分之五十的分数。

 

      28号上午11点,蓝桥杯官网公布了此次比赛成绩,当时便迫不及待的查看了一下成绩,Java大学B组二等奖,然而我的上一位同学刚好是一等奖,看到这样的结果我表示是有一点开心也是有一点失落。虽然这次比赛与一等奖插肩而过,但是此次比赛的准备过程也让我收获颇多。

 

posted @ 2017-05-31 14:36  舞动的心  阅读(22957)  评论(5编辑  收藏  举报