返回首页
您的位置:首页 > 新闻 > CCF聚焦

CSP高分说 | 江南大学董万里:从零开始的算法竞赛之路

阅读量:53 2024-09-02 收藏本文

江南大学董万里在第34次CSP认证考试中获得440分,第35次CSP认证考试将于9月22日举办,报名正在进行中。每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛,CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。



图片

非常欢迎更多CSP优秀学子分享自己的宝贵经验,联系:csp@ccf.org.cn



我的算法竞赛经历


我接触算法竞赛的时间较晚,在大一入学之后才逐步了解。由于对算法编程较为感兴趣,我开始向老师和学长咨询算法竞赛的相关信息,这时CSP认证以及其他一系列算法竞赛进入到我的视野。在初步学习了C和Python后,我报名参加了2023年12月份的第32次CSP认证考试。当时我对算法的学习仅限于皮毛,对于后两题束手无策,最终以220分的成绩,带着一丝不甘与激励,结束了初次试炼,这对于我来说算是一个小小的刺激。


从那以后我在算法竞赛上投入了大把的时间,加入ACM算法俱乐部。此外,我几乎饱和式地抓住每一次参加算法竞赛的机会,相继报名参加了蓝桥杯、天梯赛、JSCPC、CSP34和百度之星。参加比赛必然有喜有忧,在蓝桥杯和百度之星拿到国三的同时,天梯赛中我以个人162分错失个人奖项。在JSCPC中也因罚时过高遗憾打铁,距离铜牌仅有2名的差距。


图片

2024JSCPC 右一为董万里


经过了近10个月的算法学习,我满怀信心报名了第34次CSP认证考试。期间,我用30分钟快速解决掉1、2题后,开始关注第3题模拟题:在这道题上我写了一百多行代码并进行了许久的调试,但最终TLE只拿到40分,我意识到在如此大的代码量上改进时间复杂度会极其难以调试,于是果断转向下一题。观察出第4题为类似01背包的动态规划问题后,我花费十几分钟推导出了状态转移方程,写完代码一发通过。此时比赛只剩余一小时,我观察到第5题的正解显然是某种二维区间数据结构,然而我并没有学过,于是开始尝试抓取部分分。我想出了一种平均时间复杂度较为优秀的算法,遂尝试提交,幸运地拿到了第五题的全分,最后得到440分。


图片

第34次CSP认证成绩单截图



CSP经验分享


CSP共5题,每题100分,答题时间共4小时。采取类似IOI赛制,提供部分分(对于每道题,按照通过的测试点数量得分),可以进行多次提交并实时查看提交结果。对于每道题取最高分,但是有32次的提交次数限制。


前两题通常只涉及简单算法,有扎实的语言基础即可全部拿满。若要追求高分,必须有足够的代码熟练度,快速解决前两题,为后续题目留足时间。


第3题通常情况下是一道大模拟,代码量较大,往往难以调试。做题时应考虑周全再动手,提前确定好解决问题的流程;同时,应尽量把代码的每个部分模块化,封装在函数或结构体中;做题时应当步步为营,尽量保证每一步的正确性,这样可以减少调试时的困扰。如果实在难以做出正解,可以先根据测试点的性质拿一些部分分,然后去看看4、5题。切忌在一道题上花费过多时间。


第4、5题往往会涉及一些复杂算法,想拿全分不那么容易。可以先观察前几个测试点的性质,拿到部分分后再考虑正解。


算法能力的提升离不开学习和训练。学习算法时可以参考OI-Wiki和洛谷题单,多在Codeforces、洛谷、牛客等平台参加线上比赛积累经验。有一定训练量后,可以将自己的代码总结提炼为模板——CSP认证、XCPC系列赛事都是允许携带纸质材料的,可以打印模板带入考场以备不时之需。在考试前一段时间,最好登录CSP模拟考试系统看看近几次认证的真题,进行一次完整的模拟,大致分配好时间。



结语


感谢CCF提供这次宝贵的机会,让我能在此分享经历与感悟。CSP认证的赛制友好,题目难度有梯度,适合用于代码能力与算法水平检验,值得大家报名参加。最后,我衷心祝愿CCF越办越好,也祝所有同学在CSP和其他算法竞赛中取得自己满意的成绩。