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

吉林大学赵星宇:从零基础到圆梦金奖——我的CCSP竞赛之旅与成长心得 | CCSP金奖说

阅读量:128 2024-11-28 收藏本文

吉林大学赵星宇在2024 CCF CCSP竞赛中获得金奖,每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛。第36次CSP认证考试将于12月8日举办,报名正在进行中。CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。



图片

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



一、CCSP:结识、发展、热爱


早在去年,我就从同学那里知晓了CCSP竞赛。但那时候的我,并不具备优秀的编程能力,也未达到参赛门槛(CCF CSP认证200分及以上)。而在今年,当我披荆斩棘获得诸多奖项后,偶然间打算整理一下过去的信息,却命中注定般地瞥见一条QQ对话:“你想参加CCSP吗?”……缘分的纠缠使我有面对过去弱小自己的勇气,也有了弥补遗憾的机会。


经我了解,CCSP是持续十二小时的竞赛。在这之前,我从来没有了解过类似的赛制,因此我知道这次CCSP之旅必定是不可多得的珍贵体验。事实也确实如此,在我报名后,我翻阅了CCSP往年的题目,在感受精妙的题目设定的同时,也逐步适应了新的赛制。与同学们的交流切磋,与老师的沟通,使我更有信心在接下来的竞赛中取得理想的成绩。


在正式的参赛结束之后,虽然历经了十二小时的你追我赶,但我并不觉得疲惫。看着巨大的逻辑网络在自己手中解析为条条代码,我感受到了从其他赛制不能体验到的欣悦与乐趣。



二、CCSP2024赛场体验与经验


CCSP作为“计算机系统与程序设计竞赛”,与传统程序设计竞赛存在显著差异。尽管竞赛仅设有五道题目,但其持续时间长达12小时。通常情况下,竞赛内容包括一道签到题、两道传统程序设计题以及两道系统实现题。


在赛制方面,CCSP采用IOI赛制,参赛者为单人形式,提供充足的提交次数,参赛者可即时查看评测结果,并设有部分分数的评定。此外,错误提交不受任何惩罚。


由于除签到题外的其他题目,特别是系统实现题,其代码实现极为繁琐复杂,通常需要300行以上的代码(比较困难的题目,如CCSP2023的“简易类型系统”甚至需要上千行才能完成)。因此,选择合适的编码工具将显著提升编程效率和调试速度。在CCSP提供的编程工具中,我个人认为最好用的是VSCode。


图片

图为CCSP2024提供的竞赛环境(很可惜没有神器CLion)


由于CCSP允许携带电子资料,可提前准备好VSCode的配置文件,以便使用VSCode的调试功能。


在比赛期间,参赛者在完成签到题后,可以先对所有题目进行初步浏览,从而选择自己具有思路或擅长的题目进行解答。在比赛进行一段时间后,建议关注排行榜,优先处理那些通过人数和得分率较高的题目。对于传统程序设计题目,当思路不明确时,可以考虑先通过暴力算法获取部分分数,随后再思考如何应对更大的数据范围的挑战。对于系统实现类题目,这类题目通常不依赖复杂算法,但其题面往往较为复杂且代码较长,因此建议为每道题目预留至少3到4小时,以便于阅读题目、编写代码及进行调试等工作。


在CCSP2024中,我在通过签到题后,两道传统题均没有太好的思路,因此在打了60分的暴力分后,我决定优先解决其中一道系统实现题,最终拿到了该题的一血。


图片

CCSP颁奖典礼现场赛题分析


在通过此题后,我有了前面一道传统题的思路,也顺利通过了这道题,然后开始集中精力攻克另一道系统实现题,比赛结束时得分为100+100+60+100+80=440,获得金奖第14名。


图片

CCSP颁奖典礼现场合影



三、备考建议


首先,编程与算法的基础知识是在程序设计竞赛中取得优异成绩的基石。推荐在洛谷、Codeforces等平台进行练习。洛谷提供了丰富的模板题目与经典题目,借助这些题目可以学习基础算法并快速掌握常见的解题思路;而Codeforces上的竞赛则适合进行Ad-hoc类题目的训练。此外,Codeforces设有评级系统,使选手能够对自身实力有更清晰的认识。若能达到1900以上的分(Candidate Master),则表明已具备相当的编程能力。


其次,掌握熟练的代码调试能力可以让我们在编程时事半功倍。在CCSP中,所涉及的代码通常具有相当的复杂性和繁琐性,因此,编写出bug几乎是不可避免的。在这种情况下,能够熟练地运用各种调试工具将显著提高调试的效率和速度。许多参赛者往往仅限于使用“输出中间变量调试法”来查找问题,然而在许多特定的场景中,使用调试器(debugger)进行调试不仅能够提供更高的准确性,还能有效地加快问题的定位和解决过程。因此,提升调试技能,特别是对调试工具的熟练使用,将极大地增强在竞赛中的竞争力。我们在平时训练时,可以放弃Dev-C++、Code::Blocks等传统IDE,转而使用CLion、Visual Studio等现代化工具。这些工具不仅拥有更优秀的代码提示、更便捷的代码补全、更智能的格式调整、更好用的调试器,还能在程序出现“RE”(Runtime Error,运行时错误)时,快速定位到代码中导致程序出现RE的位置,而传统的工具只会提示程序崩溃退出,不能做到快速查错。


最后,要拥有冷静的思维和平和的心态。这不仅是个人能力的体现,更是参与程序设计竞赛所必需的重要素质。能够站在这个充满挑战和竞争的赛场上,我们已经在众多同龄人中脱颖而出,成为最优秀的一批。这样的成就不仅源于我们的知识储备和技术水平,更是我们在面对压力和挑战时,能够保持理智和冷静的思考能力所带来的结果。在竞争激烈的环境中,能够以平和的心态应对各种复杂问题,将使我们更具优势,进一步提升我们的表现。



四、结语


在参与CCSP竞赛的过程中,我获得了许多宝贵的知识和经验。通过这次竞赛,我不仅提升了自己的专业技能,还拓宽了视野。对此,我要衷心感谢CCF为我们提供这样一个优秀的比赛平台,让我们能够展示自己的才华、交流思想、互相学习。同时,我也衷心祝愿CCSP竞赛在未来能够越办越好,吸引更多的参与者,共同推动计算机科学领域的发展与创新。