2022 CCF CCSP于去年12月11日在各CSP认证点成功举办,武汉大学王骏峣获全国赛金奖第十名。每年CSP高分考生可报名参加CCSP竞赛,CCF邀请部分2022CCSP获奖选手分享经验,希望能够帮助同学们在2023年CSP认证和CCSP竞赛中取得更大的进步。本期推出的王骏峣就读于武汉大学。武汉大学作为CCF CSP认证点高校,是CSP认证优秀单位。
非常欢迎更多CSP优秀学子分享自己的宝贵经验,联系:csp@ccf.org.cn
在信息学竞赛初识CCF
我在中考前通过高中自主招生,进入襄阳四中的第一届「卓越班」,而卓越班的信息技术课便是使用GUIDE和scratch编写简单的程序。因为在课程中表现出一定的编程思维和兴趣,我被教练谢罗迪老师看中,参加暑期的竞赛课程,学习了贪心、枚举、简单数据结构等。因此,我于高一入学时提前进入竞赛班,开始了为期两年的高中信息学竞赛学习。
在学习了两个月信息学竞赛后,我于NOIP2017获得了200分的全校最高分,这让我产生了十足的信心,全力冲刺下一赛季的竞赛。第二年的NOIP我的表现并不太好,但在CCF举办的NOI冬令营中,我认识了很多志同道合的同学,也取得了不错的成绩。在CCF CTS中,我成功报名为闭幕式主持人,进一步了解了CCF文化。
后来我还参加了清华大学举办的THUSC,赛时所使用的TUOJ和CSP、CCSP使用的OJ十分相像,这也让我在CSP系列比赛中产生了十足的亲切感。最终在NOI2019时,我遗憾地以2分之差和银牌擦肩而过。
在CCF NOI系列活动中,杜子德秘书长、何琳老师和周苗老师给我留下了深刻的印象,也因此我对CCF有了很多的了解,上大学后我也成为了CCF学生会员。
王骏峣的第25次CSP成绩
对CSP和CCSP的认识—CSP
CSP有一个特点,就是题型相对固定,区分度主要在三、四、五三道题上面。第一题基本没有什么难度,一般读懂题就可以做出来。第二题会在第一题的基础上增加难度,需要用到一定的思维技巧和编程技巧,但总体而言并不难,一般会用到贪心算法或简单的数据结构。
CSP的第三题是模拟,也就是实现一个比较复杂的功能系统,这便和CCSP有相似之处了,因为CCSP是「系统与程序设计竞赛」,所以CCSP更加考验对系统整体的实现。「模拟」类型的题目一方面在实际应用中很重要,另一方面也是多数算法竞赛选手较为抗拒的,所以要在CSP系列赛中站稳脚跟,一定不能抗拒模拟,要敢于尝试。如果没有进行模拟题的练习,可以尝试「NOIP斗地主」或「SDOI猪国杀」两道算法竞赛题。
在这次CCSP中,第三题关于数据库系统知识的考查,就是建立在查询系统的基础上。完成这道题,不仅需要一定的数据库基础知识,还需要根据已有的类完成合适的函数功能,同时考察了数据库、模拟和面向对象等多方面的知识。
CSP的第四、五题,难度会稍有提升,可能会考察动态规划、图论、高级数据结构等知识点。一般有算法竞赛经历的选手才能比较迅速地解出。而无论有无算法竞赛经历,只要一时无法想出正解,就要去争取部分分。毕竟一道题是100分,可能其中60分的部分是无需特殊算法就能做出的小数据点,而CSP中一道题有32次提交机会,所以可以多次尝试,只要拿到额外的分,就是赚到。
王骏峣在CCPC湖北省赛编写代码
对CSP和CCSP的认识—CCSP
而2022年的CCSP只有3题,类似于往年的分区赛。这三道题中第一题是算法相关,需要有一定的动态规划基础和优化能力。但题目提供了多个梯度,可以让不同复杂度的算法通过。而只要勇于尝试,可以用合适的贪心做法或者错得不太远的动态规划在第一题拿到高分。
正如前文提到的,CSP和CCSP中一道题有32次提交机会,以最后一次成绩更新的时间作为罚时进行排名。因此在合理范围内多尝试总是不会吃亏的,所以即使在赛时一道题写到一半发现出错了,也不用着急清空,可以把其他部分补全之后测样例提交。
第二题是操作系统有关的题目,而CCSP是可以携带电子资料的,这时我翻阅了计算机组成与设计的电子书,查阅并复习了TLB和页表的原理和用法,从而读懂了题目。
然而,6小时对于两道系统级赛题来说实在是捉襟见肘,我在第二题拿到20分之后看到有同学已经提交了第三题并获得了满分,而第三题的评分标准是和其他人的效率进行比对,实时更新分数。我认为在其他同学没有提交很优秀的做法时,只要写出次优解同样能得到较高的分数,开始根据提示操作第三题。然而由于对面向对象练习甚少,调整编译错误便耗掉了我大半个小时的时间,如果我对C++的面向对象编程更加熟悉,可能能够在赛时得出正常的结果。
此外,要合理利用比赛规则,以避免对自己不利的情况。在比赛开始后一小时,我所在的一排计算机突然断电,想到我使用的vim会保存临时文件,我并没有慌张。于是我举手喊来监考老师,要求延时被耽误的时间,并将相应工程文件夹拷贝到稳定的设备上继续答题。
最终,我因以较快速度拿到120分而获得金奖。
如何准备CCSP
CSP系列赛使用的系统为Ubuntu,这和我们日常使用的Windows有着较大的区别,和macOS有一定相似之处。所以在平时可以多使用Windows的WSL(Windows Subsystem for Linux)或macOS的终端,从而熟悉编译和运行环境。
在备考CSP、CCSP时,侧重点会和ICPC、CCPC类算法竞赛不同。尽管二者有较多交叉的部分,但CSP不仅要求算法正确,而且对代码的健壮性有一定的考量。CSP系列比赛常常会遇到比较复杂的代码,当遇到代码量较大的题目时,调试和灵感变得同等重要。
此外,对于难题而言,当无法求出正解时,部分分显得格外重要,因此要多练习数据有梯度的题目,从而学会数据分治,尝试用不同的代码获得不同的部分分。可以多去分测试点的在线OJ进行练习,或者找到蓝桥杯、天梯赛等比赛的真题,方便把握部分分的得分技巧。
最后,在平时的计算机专业课程中,计算机组成原理、操作系统、数据库系统、编译原理等课程是同样重要的。CCSP作为新型竞赛,将这些传统竞赛中没有的知识点穿插进比赛题目中,是十分有意义的尝试,这也让我们了解到,系统级、硬件级的课程也不能被算法竞赛选手忽视,作为计算机相关专业的学生,要对这些有一定的掌握,从而作为精英型人才,全面发展。
王骏峣在线观看CCSP颁奖会
写在最后
CCSP于我而言,很像是一场探险,因为它涵盖了太多的未知。同时,有着实时榜单和评测反馈的比赛机制使比赛增添了趣味性。我十分期待能够到线下去参加12小时完整的竞赛,一方面这样的比赛更加有区分度,另一方面也能结识更多志同道合的伙伴,也可以进一步了解CCF,了解中国计算机的发展和变化。
希望CCSP能够有更加精彩、高质量的题目以及更合适的测试数据。祝CCSP这样打破传统的创新形式比赛能够如雨后春笋般,更好地推动计算机教育的发展。
关于CSP和CCSP
CSP注重考查计算机算法、编程等基础能力,正逐步成为业内评测软件能力的基本标准。目前CCF已在全国授权设立了178个CSP认证点,至今已有182323人次参加了CSP认证。在CSP的基础上,CCF于2016年创立了面向大学生的年度竞赛CCSP(大学生计算机系统与程序设计竞赛),至今已成功举办7次,参加CCSP的选手均为CSP成绩优秀者,CCSP更注重考查计算机系统能力,选拔的是顶尖人才。