南开大学曲恒睿在第34次CSP认证考试中获得450分,第35次CSP认证考试将于9月22日举办,报名正在进行中。每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛,CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。
非常欢迎更多CSP优秀学子分享自己的宝贵经验,联系:csp@ccf.org.cn
竞赛经历
在同学的介绍下,我于初三下加入烟台二中信竞队,开始了我的算法竞赛之路。那个阶段我学习的知识主要关于C++的基本语法以及一些简单的算法,比如贪心、二分和基础DP等。次年,我在初四时取得了NOIP普及组的一等奖,虽然成绩并不算突出,但也给了我莫大的鼓励,促使我下决心学习算法竞赛。
自那之后,我便开始准备NOIP提高组以及CSP-S这两个难度较高的竞赛。这一阶段的知识量远多于入门阶段,动态规划、数据结构、图论等知识接踵而至,每一块都需要下功夫去学。除此之外,更需要去培养的是写代码的能力,俗称码力。会写代码不仅需要有清晰的逻辑,还需要面对突如其来的bug能沉下心去调试的定力。在队友们的陪伴以及兴趣的驱使下,我稳步学习,在高一取得了NOIP一等奖。遗憾的是,在那年的CSP-S中,由于我硬啃难题导致分数很差,只拿了三等。
省选比赛场地,左二是曲恒睿
同年,我抱着试一试的心态参加省选,没想到取得了山东省前五十名的成绩。绝大多数的竞赛生在拿到一等奖之后就可以结束了他的竞赛之路,本来我也在纠结要不要继续走下去,这次意料之外的成绩使我燃起了进省队的希望,我决定继续走下去。
准备省选的难度又比提高组难了一个档次,这个阶段不仅需要将每一块知识都学的很深很牢固,还需要有很强的码力以在有限的时间里写出复杂而逻辑严谨代码的能力。当时的我与这个要求还相差甚远,但我并没付出相应的努力,在停课备战的几个月里也是三天打鱼两天晒网。最终,高二的比赛里我取得的名次还不如高一,我高中阶段的竞赛之路就在缺憾中结束了。
我并不想让我的算法竞赛之路止步于此,我仍向往着做出一道难题,看着屏幕上的accept时的激动;仍向往着学会一种新算法,并将其实现时的喜悦。于是,我决定在大学参加acm,接下来的故事才刚刚开始……
学习建议
CSP认证有五个题,相比于acm系列竞赛,我认为题型与CSP-S、NOIP等竞赛更加类似,毕竟这些赛事都有部分分可得,也都是个人赛事。
取得CSP 200分左右的成绩与取得NOIP普及或现在的CSP-J一等的难度相当,需要熟练掌握基础语法以及简单算法,并且要具备一定的码力。这一阶段我推荐在洛谷或牛客等网站上找一些难度较小的题单,学一块知识便做一些与之相关的题,慢慢地将基础打牢就不会有什么问题。
在我看来,取得CSP 350分以上的成绩需要高于NOIP一等的实力,但也不需要达到省队选手那么强的水平,即大部分的基础算法都需要掌握,一些高级算法比如平衡树,AC自动机等字符串算法还有DP的各类优化也需要有所了解。学习这些知识注定要花费很多的精力,且很多时候,还要对着上百行的代码逐字逐句分析来找一个不起眼的bug。如果对算法竞赛没有兴趣或者没有下定决心要学,那么这个过程注定是枯燥无味的。所以我推荐在立下这个目标前先好好考虑自己是否有信心坚持下来。如果有的话我建议先找题单将知识学完并实现一遍,在有了一定能力后,可以参加一些网站比如codeforces、atcoder、洛谷和牛客上的比赛,这不仅可以使你熟悉比赛环境,也是给你自信心,形成正反馈的一个绝佳的机会。
如果在这之后,还有参加xcpc系列竞赛的打算,我推荐刷题的重心可以放在codeforces、atcoder这些网站上,因为acm系列竞赛与oi竞赛的差别还是很大的。在acm的题目里,码力和算法知识只是一个基础,它最考验的是思维能力以及能否将一个天马行空的想象变成切切实实的代码。除此之外,还需要找到两个志同道合的队友,比赛过程中需要团队成员优势互补,像拼拼图一样将几个奇思妙想拼凑起来解出谜题,这些都是算法竞赛的魅力所在。
结语
我的算法竞赛之路从始至终都与CCF系列竞赛有关,可以说CCF见证了我的成长,所以我衷心地祝福CCF越办越好,带给我们更多优质有趣的题目,陪伴更多竞赛选手成长,为计算机教育事业做出贡献。