
什么样的学生适合走信息学竞赛?
拿到CSP普及组一等奖、提高组一等奖需要掌握多少知识?
如何在信息学竞赛道路上走得更远?
今天,我们邀请了小猴编程信息学提高组教练董华星老师为我们分享。
董华星老师
毕业于清华大学,原信息学国家集训队队员(20人),曾获NOI金牌、APIO满分,两次以总分前四入选信息学浙江省队,现任学而思培优小猴编程信息学提高组教练。
2020年,小猴编程学员在信息学全国联赛北京赛区的比赛中,获得CSP-S一等奖33人,CSP-J一等奖60人;CSP-J全市满分共4人,有2人为董老师班的在读学员。
12月的NOIP一结束,很多学生发消息AFO(Away from OI,即远离信竞)。但这些学生中,绝大多数都只是抒发自己没能拿到高分的情绪。他们会在短暂调整后,继续钻研算法,向更高的目标前进。
兴趣,是参与任何竞赛的前提,尤其是信息学竞赛。我从未见过哪个选手,能在毫无兴趣的前提下入围省队、冲刺NOI。没了兴趣,甚至拿联赛一等的可能性都很低。
信竞的核心是算法,需要选手将问题转化为相应的数学模型,设计完整而具体的逻辑解决框架,并最终用编程实现。
选手对信竞的热爱,更多在于解决问题的快感。这点更像是做数学题。信竞的很多问题也与数学有紧密联系,例如图论实际属于离散数学,动态规划实际属于运筹学。
实际上,优秀的信竞选手,通常都有不错的数学基础,无非更多在做数学应用,而非理论研究。
华星老师为优秀学员颁奖
有了兴趣的驱动,学生才可能在课下主动调试程序,自学新知识,与其他优秀的选手交流;到了后期,甚至会为了参加一场国外的比赛而熬到后半夜。逐渐地,这些学生在信竞赛场上的表现,大概率会优于他们同龄人。
今年拿到CSP-S一等的学生中,最低是在算法五兴趣班,才刚刚开始接触图论。去年拿到CSP-S一等的,当时最低也是在算法五兴趣班。其中还包括一些只在我们这里上课,没有校内教练指导的学生。
对于大多数知识点而言,能够背诵经典代码,能够熟练应用经典模型,能够绕弯将问题转化为经典模型,以及能够解决多模型嵌套的问题……对应着完全不同的能力层次。
举个例子,同样是学过动态规划01背包模型的学生,学得深的可以解决很多变形问题,而学得浅的实际连状态转移的原理也没弄明白。
不幸的是,学生在初学时一旦成为了后者,如果再自以为“学过了”,那么这个学生就像是掉入了一个极深的陷阱,很难在信竞上继续进步。
比赛现场图1 (源自:NOI官网)
信竞的区分度,主要来自于选手对问题的分析与处理。选手需要在限定时间内,设计并实现符合一定时空效率的算法。
算法设计是第一步,程序实现是第二步。程序本身对不对,主要影响选手有没有分;程序跑得快不快、稳定性好不好,则影响了选手究竟能得到多高的分数。
我很反对让学生对着代码模板照抄。我更希望学生能够按照自己的理解,写出属于自己的模板,因为只有这样才能体现学生的理解深度。而且在实际比赛中,命题人也会尽量规避所谓的“模板题”,以保证试题的区分度。
总之,泛泛地接触一些知识,并不能让选手有更突出的比赛成绩,甚至有可能因为听说得太多,导致解题无从下手。能用较少的知识解决较多的问题,才是优秀选手应当具备的能力。
同样是一道题,同样是应用刚刚讲解过的知识,只不过略有复杂,有的学生会直接放弃,有的则愿意花两三天去琢磨细节。虽然短时间并不一定能够比出这两类学生的成绩高低,但一段时间下来,后者通常优于前者。
一些家长会问,达到什么程度需要刷多少题。这个问题实在是很难回答。因为做明白一两个略有挑战的题目,比刷100个可以轻松解决的题目,对学生本身的帮助是不一样的,而很多时候,前者的作用远大于后者。
当然,题目本身也不宜过难,“跳一跳能够到”(即需要稍加思考、有一些挑战难度)的程度会更合适。
比赛现场图2 (源自:NOI官网)
在我自己还是竞赛选手的时候,时常会碰到一些需要自己研究很久的算法。研究清楚算法原理之后,有的还需要花不少时间来研究如何将程序写得既简练又准确。
即便是在初学编程语言时,我也有过这种经历。所以,一个题目钻研好几天,一个题目做上好几遍,我个人都觉得是很正常的。
我偶尔会有意将这种训练带给学生。
例如去年春季的某个课后练习题,让某位蒋姓同学从5月31日一直做到了6月14日,而这位同学在最近的CSP-S和NOIP中,成绩都位列初中生的前五。
蒋同学洛谷做题部分记录截图
我也相信这位同学和其他有如此品质的同学,会在未来创造出更多可能。
每年都会有一些信竞选手的比赛成绩是不如前一年的,其中也包括一些信竞高手。例如NOI2020全国第一的虞皓翔,初二就拿到了NOIP提高组一等,但初三只拿到NOIP提高组二等;我的学弟周而进,初三入围了NOI金牌,但高一却错失了NOIP提高组一等。
竞赛成绩一定是有运气成分的,即便是实力极强的选手,难免也有重大失误。这时候,如何理性看待自己的比赛成绩,能否顺利走出比赛失利的阴影,是这类选手必须面对的问题。对于平时实力不强,比赛发挥较好的选手,也同样需要客观认识自己的比赛表现。
联赛、省选赛、NOI的难度构成
在信竞中,从联赛普及组,到联赛提高组,再到冲刺省队,最终冲击国家集训队,这之间无论是所需的知识面,还是问题剖析能力,都是指数级增长的。
哪怕是代码编写能力,也需要大幅提升。实际上,对于大多数选手而言,即便后期加倍投入,成长所需的时间周期也明显长于前期。因此,真正能够坚持到到最后的选手,总归是少数,这既需要相应的精力分配,也需要一份执着。
竞赛是属于少数人的乐趣。数学竞赛、信息学竞赛等学科竞赛皆是如此。
愿每一位热爱信竞的选手,都能感受到更多信竞的乐趣,体会到更多算法的美妙,在竞赛道路上收获更多难忘的回忆!