作为计算机专业的学生,在保研、找工作的时候有相关竞赛的好成绩是非常大的优势。而权威、参赛人数多、认可度高的“蓝桥杯”全国软件和信息技术专业人才大赛(以下简称蓝桥杯大赛),就是一个非常不错的选择。
正好,小异带来由蓝桥杯组委会组编、著名竞赛教练罗勇军与杨培林老师编写的蓝桥杯大赛官方指导教程《程序设计竞赛专题挑战教程》,本书例题代码用C/C++、Python两种语言编写,同时附带Java语言代码的电子资源,如此丰富的学习资源,加上罗老师多年的编程与竞赛经验,定能让大家快速上手算法学习,掌握算法竞赛技巧,从而获得满意奖项。
▲ 点击图片,即可购书
01
蓝桥杯大赛的本质是算法竞赛
蓝桥杯大赛是由工业和信息化部人才交流中心主办的,经过十多年的发展,参赛人数已经达到了60万,吸引了包括清华大学和北京大学等全国1600多所大学学生参与。同时,它也入选了“全国普通高校学科竞赛排行榜”,获得国家与大量优秀企业的认可。
其竞赛题目包括填空题和编程大题,主要考察参赛者的解决实际问题的能力,侧重对算法和数据结构的理解与应用,也就是说蓝桥杯大赛本质上是算法竞赛。
学生参加算法竞赛,一方面能培养自己的算法能力,提升编码能力,进而让自己在以后的研究与工作中都占据优势。参加算法竞赛还有以下几方面的优点。
培养计算思维和逻辑思维
一道竞赛题往往需要参赛者综合运用多种知识与方法,例如数据结构、算法知识、数学方法、流程和逻辑等,这需要参赛者有良好的计算思维和逻辑思维。
掌握多种编程语言
在蓝桥杯大赛中,可以用到C/C++、Java、Python这几个当下流行的编程语言,这几个语言在当前就业市场中有大量岗位需求。掌握好它们,就能在以后的学习、就业中占得先机。
在罗勇军老师多年的带队竞赛经历中,遇到不少非计算机专业的学生在算法竞赛获奖之后,也能拥有较强的能力去从事计算机相关工作。而计算机专业的学生,在学习算法竞赛后更是如虎添翼,计算机编码能力获得质的飞跃!
因此,学习算法竞赛知识不仅可以获得蓝桥杯大赛和其他算法竞赛奖项,也可以让我们拥有解决以后面试、工作中遇到的算法难题的能力,可谓一举多得。
02
16年竞赛主教练带领备战蓝桥杯
自罗勇军老师2006年担任华东理工大学ACM国际大学生程序设计竞赛(简称ACM/ICPC)教练以来,他带领的队伍曾多次获得ACM/ICPC亚洲区域赛金牌、打入世界总决赛的好成绩。
同时,他也带领队伍在中国大学生程序设计竞赛(CCPC)、蓝桥杯大赛中取得过优异成绩。现在,他同时担任蓝桥杯大赛的官方讲师,一直和同学们分享竞赛与算法知识,成功地帮助了大量同学备战蓝桥杯。
罗老师认为算法竞赛“要求参赛队员必须具备扎实的数学功底、非凡的算法设计能力、娴熟的编程技巧,以及良好的协作精神、稳定的心理素质和快速的临场应变能力。”
而这些能力并非计算机专业学生独享,其他专业的学生也具备或者经过训练之后可以达到。不少学生在刚接触蓝桥杯大赛后认为其难度大、费时间、学习成本高,觉得参加算法竞赛并获奖这条路并不好走。
为了解决同学们的竞赛困惑,帮助他们从一名算法竞赛的“小白”开始成长为熟悉算法知识、构建算法思维、拥有高效编码能力的计算机编程人才,罗老师与杨培林老师编写了这本《程序设计竞赛专题挑战教程》。
▲ 点击图片,即可购书
本书的另一位作者,杨培林老师曾担任多所大学算法团队教练,有丰富的大学与线上课程教学和研发经验。他一直没有停下过对技术的追求,同时孜孜不倦地把10多年来积累的经验与技巧和更多人共享。
两人联合打造的这本备赛指南,可以称之为蓝桥杯大赛官方教程,针对性很强,被许多优秀指导教练与参赛者强烈推荐。
▲ 本书得到赛事相关人员推荐
罗老师称这本书为“获奖的捷径”,同时指出“捷径往往是艰难的代名词,在算法竞赛的学习这件事上,捷径意味着要付出更大的努力,要进行高强度的学习”。
本书之所以可以成为“捷径”,就在于其中提供的知识点更为集中、讲解更为清晰、题目设置更有针对性——包含了罗老师多年带队总结的宝贵实践经验。
03
算法竞赛获奖“捷径”
当然,是否通过这条“捷径”,同学们的努力同样重要。
刷题的正确姿势
在面向算法竞赛的学习方法中,最重要的一种方法是“刷题”,即大量做算法题,同时进行建模训练与编码练习。
罗老师直言:
“
只读理论、只看书,而不做题,学习效果只会略大于零,能力得不到提高,肯定不能得奖。
”那么要“刷”多少题才够呢?答案是600~1000题。
计算机数据结构和算法的知识点非常多,是长久以来无数优秀计算机科学家与程序员在实践中发现和总结而来的精华。学习和掌握这些内容,是成为一名合格程序员的必经历程。
比如基本数据结构有简单的链表、队列、优先队列,也有较难的堆、二叉堆、单调队列;搜索包括简单的基本深度优先搜索(Depth First Search,DFS)、DFS 记忆化搜索、基本广度优先搜索(Breadth First Search,BFS),和较难的BFS 扩展(双向广搜、优先队列)、剪枝、爬山算法等,还有难度更高的IDA*、模拟退火、BFS 扩展(双端队列)。
本书的读者是算法竞赛的初学者,或者是有一定基础的,但是希望进一步提高自己算法能力的参赛者。
所以其中包含大部分算法竞赛知识点,满足参赛者需求。它们集中在基础数据结构、基本算法、搜索、高级数据结构、动态规划、数学、字符串、图论等内容上。
▲ 本书内容结构
因为蓝桥杯大赛题目是分级、分阶段的,其中难题、罕见题并不多。所以同学们可以把学习重点放在常见的、基础的算法知识点上。通过大量实战练习,专项专攻地提高编程能力,从而在蓝桥杯大赛中获得更好的奖项。
每个知识点需要做10~20题,当然多多益善。
以速度优先
会解题很重要,但解得快更重要。因为蓝桥杯大赛10道题限时4小时,时间并不充裕。所以编程速度在很大程度上影响了最后的获奖级别。
要提升速度,除了大量“刷题”之外,罗老师认为还可以从以下三个方面入手:
熟练掌握集成编译环境。
减少调试,争取一次通过测试样例。重点在于减少使用指针、多用静态数组、将逻辑功能模块化等;还有不要使用动态调试方法,不要使用单步跟踪、断点等调试工具。
尽量使用函数库,不仅能减少编码量,还能减少发生错误。
在这些方面做好,可以节省更多的时间,从而提升解题速度。
灵活应用模板
模板的是很多数据结构和算法的标准代码,使用模板可以在日常中省事不少。但是新手在算法竞赛中寄希望于模板,就非常不可取!
一是因为蓝桥杯是闭卷形式,记住大量模板吃力不讨好;二是比赛题目大多是新题,初学者很难套用合适的模板。
学习和掌握模板对学习数据结构和算法较为重要,但是要用在竞赛当中需要对模板彻底地理解,达到融会贯通的效果,熟练掌握之后才能灵活应用到题目中。
海量资源让你快人一步
正如前文所说,本书是为算法竞赛“小白”而写,内容基础且清晰,大家都能轻松使用。
就算是刚开始学习编程语言的零基础同学,也能把本书当作编程语言的练习题来做,因为其中并没有复杂的语法。
▲ 大家都能本书中获益
同时,作为蓝桥杯大赛的官方教程,本书配套的学习资源同样丰富,可谓海量:
蓝桥云课作为官方资源平台,内嵌在线测评系统,同学们可进行模拟训练。
▲ 蓝桥杯在线测评系统
蓝桥杯官网题库lanqiaoOJ中包含历届真题,评测与大赛评分一致,大家可以实践体验。
▲ 蓝桥杯官网题库
如此丰富的学习资源,加上罗老师多年的编程与竞赛经验,定能让大家快速上手算法学习,掌握算法竞赛技巧,从而获得满意奖项。
同时,搭配另外一本官方的备赛指南《C/C++程序设计竞赛真题实战特训教程(图解版)》使用,以更有趣直观的图示直击大赛“拿分关键点”,备赛效果会更好。
▲ 即将发售
结语
罗老师坦言:
“
像蓝桥杯这样的竞赛,的确是不好学且学习成本高,但能学出来的就是高手,毕业后也能有更光明的就业前景。
”既然选择了计算机,那就是选择了远方。让我们用这本《程序设计竞赛专题挑战教程》开启我们的算法竞赛之路,向更远的星辰大海进发吧!
向上滑动查看更多信息
文章编辑:沙鱼 审校:桐希、王旭丹
参考引用:
1.《东方教育时报》:华理学子从ACM竞赛走上创业路
2.罗勇军,杨培林.程序设计竞赛专题挑战教程.[M].北京:人民邮电出版社,2022.
3.罗勇军个人博客
4.蓝桥杯官网
最后是送书,本次争取到了两本的名额。大家在下面评论区留言,点在最多的两个,可以获得赠书,截止时间1月15日18点整。这次给个命题作文吧,留言的话题是,“你在编程学习上有什么心得或者独门秘籍”,好了,舞台交给大家。