电话18065871965

邮箱qidianxingcheng@163.com

地址三明市三元区乾龙新村69幢B座2楼

【CSP-J/S】掌握这三种能力,助力初学者高效准备信息学竞赛!

2023年7月21日 719

距离 CSP-J/S 2023 第一轮认证只有不到两个月的时间了,近期有同学说了自己在备赛期间感觉有点迷茫,不知道该怎么更好地学习。

其实这种情况很正常,对于初学信息学奥赛的同学,他们可能由于不了解信息学的学习方法,或者缺乏有效指导,形成了一些不良学习习惯,导致学习进展缓慢。

但实际上,信奥赛的学习方法与其他科目不尽相同,总体来说,学习信息学竞赛需要三种能力:知识储备、代码能力和问题转化能力

知识储备,这是算法学习的直接目标,选手学会的各种算法、数据结构,做过的各种题目,都是他的知识储备。

学习信息学是一个循序渐进的过程,在没有完全掌握基础理论的情况下,就急于去学习高级算法,无异于空中楼阁。

真正要学好编程,还是要靠同学们自己多练题,根据学习进度规划练习题单,由浅入深地掌握知识,最终实现知识的融会贯通。        

在刷题练习时也要注意循序渐进,题目难度要从简单、中等过渡到困难,不要一味追求做超出当前能力的题目,也不要为了提高刷题量,去做远低于自身能力的简单题。

在练题时要不断挑战稍高于自身能力的题目,初学者在这个过程中可能经常会因为不熟练而犯错误,甚至对学习产生厌恶情绪。

所以我们在这个过程中也要做好心理准备:刷题就是锤炼自己的过程,通过不断地刷题、总结经验、再进行实战,这样才能实现本质性的进步。

代码能力,主要体现在选手是否能高效、无错误地实现算法和数据结构,以解决实际问题。

在数学竞赛中想要得分,选手只需将解题过程写在试卷上即可。然而,信息学竞赛则要求选手不仅解出算法,还需将其转化为程序,并确保程序能通过所有测试数据。

因此,对初学者而言,无论题目难度如何,都不应仅在脑海中构思算法。

正确的做法是:在编写代码前,应先打草稿,详细考虑每个细节,包括所有可能的边界情况和每个函数的具体功能。这样有助于检查算法设计的合理性,并提高编码效率。

另一点需要注意的是,要尽量减少分类讨论,初学者在编写程序时,如果过于关注可能出现的各种情况,会陷入无尽的分类讨论,这将大大降低编写代码和调试程序的效率。

举一个经典的例子:输入两个年月日时间,问它们之间的间隔是多少分钟。如果直接考虑将两个时间按分钟、小时、日期相减,就会陷入大量的细节讨论中。但如果换一个思路,先求出两个时间相距 0000 年 1 月 1 日 0 时的分钟数,再进行减法,那么立刻就可以得到结果。

所以,初学者在解题过程中应该尽量减少分类讨论,换种思路考虑,就能以更简洁的方式解决问题了~

问题转化能力,即选手将“遇到的原始问题“转化成“可解决问题“的能力。

对于这项能力,不少同学认为提升的唯一途径就是多刷题,但实际上,在信息学竞赛的学习训练中,我们不仅要注重做题,更要重视反思,并且反思往往比刷题本身更重要。

在完成解题过程后进行反思,我们可以从客观的视角重新审视代码中设计不合理的细节,并加以改正,这有助于我们理解并掌握问题的本质,从而提升问题解决能力。

在学习算法和数据结构时,我们应关注不同知识之间的联系,尝试从不同角度去理解和解决问题,这样可以帮助我们更好地理解知识点,提升思维能力。

同时,我们还需要归纳知识之间的联系,整理出题目之间的相似性,这样在遇到新的问题时,就能够快速地将其转化为熟悉的问题,提升解题效率。

最后还要再强调一点,就是“考场上的竞技技术”,想要参加 NOI 系列赛事的选手,应当重视参加模拟赛的重要性

即使是一个很会算法的选手,如果从来没有进行过模拟赛训练的经验,那么他上场之后可能会因为头文件不全、数组开小、freopen 忘写、stl 命名冲突等种种问题而获得零分。

为了训练参赛技巧、规避典型错误,提高选手在比赛中的心理素质,那就赶快多参加模拟赛进行实战训练吧!