CSP-J参赛体验
(2019-11-17 08:53:44)
标签:
noipcsp-j信奥编程教学算法 |
分类: 时事 |
因为自己在教编程课,所以总希望亲自熟悉一下考试。NOIP考试改革后,允许成年人参加考试,于是昨天有机会亲自下场体验了CCF组织的CSP-J认证考试。
提前了5分钟到考场,发现考试已经开始了(给了密码),所以应该更早一些到场。
考试流程是这样的:
全程使用noiLinux(就是在windows上运行了一个虚拟机)。
桌面上有一个压缩包和一个pdf文档
首先看pdf文档,建立自己的考号文件夹。
老师会在前面黑板上给出压缩包的解压密码,解压。
压缩包里是一个pdf文档的考题和4个题目文件夹,每个文件夹中有3个测试点数据。
解压之后,理论上就可以开始看题思考了。
编程工具是linux下的GUIDE,和我们平时使用的Dev
C++在手感上有所不同。所以在平时应当充分熟悉GUIDE的使用。
Linux的基本操作也应当熟悉,其中比较关键的是了解如何杀掉进程,以及如何编译、运行程序。我在编程过程中遇到的一个问题是,才编到第二题就把GUIDE搞得没有响应了,并且无法杀掉进程。导致的问题是无法编程和测试。好在题目文档中给出了如果在命令行编译的说明,改为使用文本编辑器来编辑,用命令行编译和运行。暂时解决问题,但使用手感毕竟不如集成工具好用。
编程题目的感受和以前没有什么区别,想做完全部4道题是有难度的,对我们的学生来说,注意力就放在前两题即可。做题的目标就限制在考卷中所给的3个测试点即可。第一题是很简单的,没有道理做错。第二题会用一些数据结构,经过系统训练,也是有可能做对的。第三题和第四题,会包含一些算法的设计,想得到满分是困难的,可以争取部分分数。
做题的策略基本就是这样。但考场的环境可能不是那么安静和友好的。你用的计算机键盘和鼠标未必是全新的,可能存在各种问题。比如我使用的鼠标右键就不是非常灵敏,点好几次才能有反应。再加上对乌班图环境并不十分熟悉,一度让我怀疑是否它就不支持右键。虽然是一件小事,但在考场的环境下会干扰心情。
上机考试可能不是专门的考场,每个人的空间很小,距离其它考生很近,容易受到干扰。比如我旁边的一个考生,刚拿到题目后就决定放弃,但考场老师不允许提前交卷。于是他只能坐在座位上干各种无聊的事情,包括持续机械地敲键盘和发出持续的怪声音。
为了避免考生把饮用水打翻到键盘里,所以考场老师不允许把饮食带到座位上,想喝水只能走出来到前面统一放背包处取水,所以也可能经常会有人走动。
从做题的过程来说,文件夹别建错,注意核对名字和题目所给一致。复制题目所给的测试文档到自己的文件中(或者也可以将题目所给的四个文件夹直接复制到自己的目录下,然后在对应的文件夹中建cpp编程)。第一个程序的框架是手写的,第二个可以直接从第一个复制修改,这样可以加快一些速度,但注意修改输入和输出文件的名字。测试过程中,会把输入文件临时改为题目所给的测试点文件的名字。比如work.cpp,其测试点是work1.in,work2.in,注意最后提交的时候,务必记得改回work.in,否则会没有分。
虽然是机考,也仍然应当带笔,有时写写画画可以促进思考。而且这次考试除了编程外还必须填写一张登记表,把每道题目的文件名再写一下。其实用意也是为了提醒考生别把文件名搞错,如果因为这个原因导致没分,是很冤枉的。
平时习惯了建全局变量,但是在Linux下发现如果使用全局的数组会报奇怪的错误,改为函数内的数组就正常了。不想去追究为什么会如此,直接改为函数内变量就好了。看来不好的编程习惯还是不宜使用,以后的教学上也应当重新强调。
调试过程有时会碰到奇怪的问题。自认为代码看起来是正常的,但运行结果就是不对。这时候切忌急躁,可以想一想是否能换个方法实现,但注意保留原有的代码。因为很可能过一会儿就会发现其实只是一个很小的地方写错了。
交卷最早提前半小时,必须举手示意,考场老师走到每个人的座位上做一些相关的操作,才能离开。所以考场到了最后半小时会变得更加嘈杂,更多人走来走去,说话声音也多了起来,让人很难安心思考。在最后的十分钟里,如果程序还没有调试好,也就不用再做了。把前面做过的题目再检查一下,特别注意的是源代码文件名和数据文件名。主程序尽量加上return
0,以免出现其它问题。
时间到以后,就不允许再做任何计算机操作了,但也不能离开考场。一个考场老师会走到每个人的计算机前面进行操作。好像就是把考生的代码文件夹从linux环境中复制到windows环境中,然后会自动提交到考场的检查系统中。然后再把刚才填好的登记表交到另一个考场老师处,同时再次检查文件是否提交正确。
整个过程,视考生实际座位,持续时间不等,我是在座位上等了半个小时才轮到。这段时间不思考刚才的考试也是不太可能的,今年的题目并不算难,但我考得很不好,感觉自己的成绩会在240~260左右。总想着如果再有半小时时间,或许还可以增加几十分。耳边听着周围的学生们会开始高谈阔论,议论考试相关的事情。身处喧嚣考场之中,难免回想起以前在学校的日子,体会到日月如梭,时光流逝,不禁感慨丛生。
自由编程如同在小溪中戏水,充满乐趣。算法考试则如同在大风大浪中搏击,其难度即使对于计算机系本科学生和大多数软件行业从业者来说,都不是一种日常。设计这些算法本身并没有多少实际价值,参加算法考试的唯一目标就是让我们体验到“自己没有什么不会编的程序”这一感觉。经历过风浪,再回到小溪边戏水的日子和那些从来没有离开过小溪的日子,会是两种完全不同的感受。
前一篇:论抵制NBA