北京邮电大学刘益铭在第32次CSP考试中获得425分,第33次CSP考试将于3月31日举办,报名将于3月4日开启。每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛,CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。
非常欢迎更多CSP优秀学子分享自己的宝贵经验,联系:csp@ccf.org.cn
我的算法竞赛历程
我是从高中开始接触算法竞赛的,我高中的教练是从一般数学老师转职当信息学竞赛教练的,所以他的算法能力不算太强,但是他是一个非常认真负责的好教练,他与我们共同学习,亦师亦友,在他的带领下我逐渐领悟到了编程与算法的美妙。
高中时NOIP的举办方式发生了一些变化,所以我高二就参加了一次CSP-S测试,获得了285分,然而我在后来的NOIP中由于爆精度的原因,虽然也获得了一等奖,但与省队失之交臂,也没能参加NOI。但是这一段竞赛经历,也给我埋下了算法竞赛的种子。
高中毕业后我如愿进入北京邮电大学,在学长的邀请下我与他们组队继续了我的算法之路,大一时由于第一次参加组队竞赛,分工的失误导致只获得了铜奖。大二的时候换了一个队友,精心准备之后,最终却只获得了银牌,这给了我非常大的打击,但是我对算法竞赛的热爱并没有因此而消失。
所在队伍在某区域赛热身赛评测序列霸屏,左三为刘益铭背影
在大学期间我也多次参加CCF举办的各种认证和竞赛,例如CSP认证以及CAT竞赛等等。对于我个人而言,算法竞赛已经不是为了功利获得奖项,而是一种单纯的快乐,和队友一起学习交流算法,在赛场上通过题目,一起小黄鸭debug……这些都是宝贵的经历。
参加某区域赛和队友的合照,左二为刘益铭
对CSP题型与赛制的理解
CSP认证与xcpc竞赛不同,它无罚时,有部分分,这些特点决定了需要有独特的备考方案。
CSP认证通常是五道题,需要在4小时内获得尽可能多的分数,题目类型基本固定。第一和第三题是同类题型,可以说是翻译题,即给出程序的自然语言实现过程,你将其翻译成机器语言,而第三题与第一题的区别就是第三题的题面更长,考查选手的阅读理解能力。第二题考察基本算法,通常来说只要你会对应算法就可以通过。第四题通常是一个数据结构,但并非是一个简单的数据结构,它会要求你实现一些比较复杂的修改和查询操作,如果当次CSP认证的题目比较难的话,甚至有可能会将需求藏起来,需要你对题目进行一定的转化才能知道要维护什么数据。第五题一般就是比较难的算法题目了,可能会考查DP、图论和博弈论等内容,非常考查选手的实力,可以说是满分的最大障碍。
而对于获得尽可能多的分数,这一条要求可以说是CSP的精髓,因为如此,CSP的每一个题目都有部分分的存在,这使得我们可以从数据出发进行思考。简单来说,部分分的存在使得你大概率每个题都能获得分数,即使你一个题都不会,例如我这次就只通过了前三题,但是我在第四题中获得了75分,在第五题中获得了50分。但是反过来说,这些部分分通常都对应一个错误的方向,如果你是希望通过该题,你可以通过部分分来缩小正确答案的区间,更快想出正确答案。
CSP备考方法
首先,最基础的方法肯定是尽可能多的学习算法和其他人做题的思路。一个非常显然的事实就是如果你足够强,力大砖飞,根本不需要任何技巧就可以获得高分甚至满分。
第二,对于CSP认证中的分水岭——第三题,因为以往的CSP认证平均分都在200分左右,我们可以发现第三题是获得高分的门槛,如果我们想要做对第三题,那么我们在平时的训练中不仅要进行思维的训练,更要进行代码能力的训练,这就是说看到一个题,只想出思路是不足的,必须要把代码写出来能够通过,这样才算练习了一个题。而由于第三题的代码通常比较复杂,那么我们在平时的代码中就要使之逻辑简单明了,还要熟练使用STL等工具,这样面对第三题这种相对复杂的问题才不至于把自己绕晕。
第三,鉴于前面所提到的CSP最关键的部分分规则,那么我们平时练习时,遇到不会做的题,不要立刻就放弃去看题解,而是要尝试尽量获取部分分,这样我们在CSP认证的赛场上才不会看到一个题就害怕,因为一个难题通常部分分都是很简单的,这样的策略能帮助我们达成尽可能高的分数。
第四,由于CSP没有罚时机制,所以我们在遇到TLE,RE等不好分析的错误时,可以对代码分段注释后进行提交,这样可以快速定位错误的代码段,便于我们调试,而这个技巧在平时的练习中也可以同时练习一下,这样我们快速通过题目后,可以有更多的时间去写部分分。
结语
感谢CCF给我这次机会分享我的经历和参赛经验。对于一个计算机或相关专业的学生,如果想要检验自己的编程能力,CSP认证是最好的一个平台,CSP认证题目质量高,评测器速度快,带给了我非常好的参赛体验。希望CCF将CSP越办越好,为祖国贡献越来越多的计算机人才。