清华大学蒙瑞俊在2024 CCF CCSP竞赛中获得金奖,每年CSP高分考生(200分及以上)均可报名参加CCSP竞赛。第36次CSP认证考试将于12月8日举办,报名正在进行中。CCF不定期邀请CSP高分和CCSP获奖选手分享经验,希望能够帮助同学们取得更大的进步。
非常欢迎更多CSP优秀学子分享自己的宝贵经验,联系:csp@ccf.org.cn
一、从OI走上计算机科学之路
小学时一个安静的午后,我偶然翻开了父亲的编程课本,泛黄书页上的一条条语句在我的心里播下了一颗计算机科学的种子。我开始在知识之树上独自“随机游走”,为学到的一个个新技能而欣喜雀跃。
初中一个热闹的下午,学校IT社的例会刚刚结束,教我们信息技术的冯婉华老师走进机房,发布了即将到来的“NOIP”比赛的通知,还“点将”身为科代表的我——“你要不要来试试?”
一点点“啃”新买的算法书,晚自习在纸上手写堆排序的代码,再借整理班级资料的上机机会提交……就这样,经过几个月的学习,我第一次参加了NOIP竞赛,也打开了算法世界的大门;我的计算机知识学习也聚焦到了算法领域,转变成“迭代加深搜索”。
升入高中,在学校信息学竞赛教练胡冬明老师的指导下,我和学校01社的社友们一起,沿着信息学竞赛的道路不断前行,在CCF主办的CSP、NOIP、NOI等一系列认证和竞赛的考场里留下了足迹。经过训练和比赛,我对算法有了更深的认识,也开始将算法的思维运用到生活和高中课程学习中。
正如高中竞赛教练胡老师在机房白板上写的那样,“计算机科学之路从这里开始”,信息学竞赛为我展现了算法的神奇,为我指引了一条可行的计算机知识学习路径。一路走来,我要感谢父母的支持,感谢广西大学附属中学冯婉华老师、唐志老师和南宁市第三中学胡冬明老师的引导,也要感谢CCF搭建并坚持维护信息学竞赛这个宽广的平台。
二、在CCSP巩固算法和系统能力
来到大学,我的计算机知识学习模式转变为“广度优先搜索”,在算法等理论计算机科学领域之外,我也开始了解计算机系统、人工智能、量子信息等领域的知识。尽管已记不清细节,但从前学过的算法背后的思想帮助我理解了更多的方法和机制。同时,在计算机领域的科研尝试中,我体会到了阅读文献解决问题这一“现学现用”学习方式的重要性。
就在OI的一切逐渐远去之时,我看到了清华算协组织参加CCF CSP认证的通知,决定参加认证找回运用算法解题的感觉。与高中时不同,我开始注意代码风格规范,并灵活运用标准库,取得运行效率和开发效率的更好平衡。
在此基础上,我参加了今年10月份的CCSP竞赛。它与传统的算法竞赛不同,一方面比赛时间长且可以携带电子资料,给了选手充分的学习和思考时间,“现学现做”的创新比赛方式锻炼了学习能力;另一方面除了算法还考察计算机系统能力,题目情境多样而真实,提供了应用所学知识、快速上手一个领域的机会。
在本次竞赛中,我在“贝壳统计”一题中把问题转化为带修改的莫队模型,并现场思考了转化的算法。在“数树”一题中,我通过翻阅OI Wiki现场学习了Euler Tour Tree这一数据结构,并对动态树问题有了基本的了解。虽然我的实现不能通过本题,但我也从中学到了知识;朴素做法能够通过本题,这也提示我在今后的学习和科研中要更大胆地尝试。“追踪检测”和“NUMA感知的调度系统”两道题目以模拟为主,虽然不像往届的题目那样考点丰富,但也巩固了我的代码实现和调试能力。此外,“I/O任务调度队列”一题简单的贪心算法事实上并非最优这一点也提示我要谨慎推理和思考。同时我也开阔了视野,结交了好友,赛里赛外都收获不少。
CCSP2024现场留影
三、将CCSP备考与学习科研有机结合起来
最后,我也简单分享个人备考CCSP的几点小经验。
第一,对于算法题,在算法与数据结构等课程学习的基础上,多思考各类题目、参加比赛是提高解题能力的关键。不同难度的比赛也可对应不同的训练重点,较难的题目可锻炼思维,较简单的题目可用来提升代码实现的优雅性。
第二,对于系统题,我认为既要熟悉计算机系统的各个领域的基础概念和方法,又要锻炼开发能力。对于没有学过相关课程的同学,除了通读相关书籍、练习配套实验外,利用往年的CCSP题目,“顺藤摸瓜”了解相关概念也是很好的学习方法。
第三,考前要准备好自己的资料库,既要保证内容齐全,又要提前“建好索引”,方便用时检索;个人认为课程考试前所做的总结(“Cheatsheet”)是很好的资料。这个资料库也可供今后学习科研查阅。此外,还要提前熟悉开发环境,也可将一些小软件包带到考场,但要提前测试兼容性,这也能提高我们配置开发环境的能力。