华南理工大学赵冬青在第30次CSP认证考试中获得440分,位列全国第五名。每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛,CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。
认识赛制与题型
首先,了解比赛的赛制对于备考至关重要,建议从CSP官网充分了解比赛相关信息。CSP认证考试要求选手在4小时内解决5道题目,赛制特点包括:题目有部分分,提交实时反馈结果,没有罚时,每道题记最高分的一次提交。选手的目标是在4小时内争取尽可能高的总分,因此开题策略可以很灵活,不是非要完成某一道题,而是先争取容易拿到的分数。
第30次CSP认证考试成绩单截图
题型分布方面,前两题难度较低、码量较小,有时第二题需要稍作思考才能出正解。第三题是模拟题,需要仔细阅读题目,理解各种要求,认真构思代码,如果能快速AC,就为开出后面两题争取到时间,因此第三题是比较重要的。第四和第五题是OI/ACM风格竞赛题,想取得满分需要选手熟悉相关的算法模型。
赵冬青参加EC-Final比赛现场
整体备考策略
比赛的得分,主要与两个因素相关:一是选手的实力水平,包括对经典模型的掌握程度,问题分析能力,算法快速实现能力,需要长期积累。二是选手赛时发挥的水平,例如在比赛中的开题策略和临场发挥,是否能在比赛期间拿到该拿的所有分数以尽量发挥出全部实力。可以在短期内改善这个因素,具体来说,因为每一次CSP题目的难度分布是大致稳定的,可以通过做历次的真题去加深对于比赛的认知。可以在官网的报名页面——模拟考试页面找到真题。
官网(https://cspro.org/)模拟考试入口
关于真题模拟训练,需要注意的是,重要的不是一定要解决某一道题目,而是要经历限时写整套题的过程,使自己对于这个比赛有一些初步的想法:自己的目标是怎样的,想达到目标,4小时内要完成多少工作量,要思考、编写哪些题目,有的问题可以考虑拿部分分,有些问题必须争取满分,等等。通过写一套真题,有了一些心理上的准备之后,现场比赛时就不容易慌(还慌就再写一套)。从真题中我们可以发现,应当在比赛期间有意识地阅读所有问题,如果中间遇到困难卡住了,也没关系,后面可能还有容易拿的分,有时可以不必纠结难题,先跳过难题,写点简单好拿分的题。
也可以花更多时间,进行更多次模拟练习,务求模拟出真实比赛时可能会遇到的各种情况,锻炼考场应变能力,以确保在场上发挥近100%的水平。当然,如果只准备CSP一项赛事,是要考虑时间成本。不过,CSP认证考试每年有4场,报名没有门槛,因此裸考也问题不大,可以相信自己发挥;就算成绩不满意,也是经验积累,相信下一次会发挥得更好。
赵冬青参加广东省赛现场
第30次CSP认证考试经验
T1整道题、T2的部分分与T3的一些部分分基本不设门槛,仔细读题即可,任何背景的选手都有机会取得200+的分数。T2拿满分需要一些观察、思考。先实现出能拿部分分的朴素算法,再想出这个朴素算法如何优化,就能拿满分了。而T4/T5的部分分,只要能看懂题意,对于图论一些基本说法有大致了解,会建图,就可以拿到。
T3模拟题,细心读题,想好,怎样实现不易出错,编写代码时可以严谨一些,尽量减少需debug的风险,想明白细节,再动手,目的是写出一次AC,或者尽量短时间能找到bug的代码。想清楚代码细节其实最多花十来分钟,但如果没有细想就急着开始动手,实际上并不能节约多少时间,反而大概率不能AC,带来难以控制的debug所需时间成本,可能会出现:代码可能越改越乱,越乱越容易引入新的错误,改半天改不对,最后还没做出。想做出T4/T5的选手,当然不希望在T3上花费几十分钟甚至几个小时找bug。
在T4和T5均获得满分不太容易,赛时建议都读一下,会写哪个写哪个,能写多少写多少。如果时间够用,最好确保能拿到部分分。
关于相关比赛的长期训练,根据自身经历,笔者认为,全面地训练:知识(经典算法/模型)的掌握、问题性质的分析、算法的快速实现,可以走得更远。
再次提醒,注意CSP的赛制,对于没AC的题,我们可以积极提交,充分利用提交反馈的信息,改进算法。
CSP的赛制设计给了选手较高的容错率,选手容易发挥出自身水平,这正是我报名CSP的原因之一,从结果看的确如此。除此之外,此次CSP评测机反馈快,题目描述清晰,有简单问题,有需要思考的有趣问题,参与比赛很有收获。
结语
办一场各方面体验都很好的比赛并不容易,希望CSP系列赛事能继续保持优质的比赛质量,选拔出更多的优秀人才,为我国计算机事业发展做出更大的贡献。