粉丝14.6万获赞30.3万
在 cspjs 信息学奥赛的第二轮及复赛中,报龄情况非常普遍,在大部分省份,包括陕西省,报龄人数是超过百分之五十的,也就是说,超过一半的选手在复赛中的最终成绩是零分。报龄的原因除了学生能力较弱,无法写出符合专业竞赛级别要求的代码外,还有部分低级错误, 尤其是第一次参赛的选手,要格外注意以下三点。一、文件存放错误竞赛中一般要求以考生的口号为名称建立文件夹,在文件夹中使用每道题的名字再次建立此文件夹。选手每道题的代码分别存放在以该题目里命名的子文件夹中。例如,二零二二年的四道题目分别如下, 在选手建立的文件夹中,应该有四个子文件夹,名字分别为 how equal x bear point。 第一题的代码应该在 p o w。 文件夹下,程序文件的名字必须是 how c p p。 第二、三、四题同样如此。 此时任何一个文件夹或者文件的存储路径出错,文件明写错,文件夹明写错均不得分。由于没有人工阅卷,全部是机器测评,测评机在对应的路径下读不到所要求的文件就是零分, 并且不接受任何申诉。另外,在我们之前的考生案例中,还出现过以下这种情况,例如,题目要求的程序文件名是 holiday 点 cpp, 学生则加了空格,写成了 holiday 空格点 cpp。 看似一样的文件名,实际上测评机在读文件时,有空格和无空格是完全不同的两个文件名称,因此也是零分。 这一点尤其对于年龄较小且第一次参赛的同学一定要注意。二、文件读写竞赛时一定要采用读写文件的方式, 而不是平时大家练习时喜欢使用的 cn in 以及 cn on。 首先要引入头文件井号 include style, 然后采用 free open 定义输入输出文件。例如二零二二年第一题 pad 代码中一定要有以下二句, free open in are steam free open how out w stout。 注意这里的输入输出文件名一定是题目名称加点 in 或者加点 out。 有些同学为了调试方便,经常把 free open 注视掉,交卷时又忘记取消注释,这样测评机读不到你的输入输出就是零分。所以请一定要在提交代码时检查 free open 语句。且 free open 中的输入输出的文件名一定是题目名称,在本题中则是 power in 和 power out, 万不可自己随便改名,也不要出现前面所说的在文件名称中随便加空格的问题。三、仔细阅读题目的输出要求。 举例,题目要求输出 hello 感叹号,你就必须输出 hello 感叹号。如果你输出小写 hello, 大写 hello 或者 hello 独家感叹号,以上三种军事零分。再举例,题目要求输出 abcd 字母中带空格,你输出 abcd 未带空格也得零分。以上 就是最容易爆零的三种低级错误。最后说一说尽量多得部分分的技巧。首先,大家一定要仔细研读数据范围,如果我们无法设计出更好的策略或算法来满足题目的所有数据时,我们可以观察在较小数据范围内,我们是否可以写暴力代码,得到一定的部分分数。 另外,即使完全不会做的题,也可以考虑个别特殊值,例如零一等,经常一个特殊值的测试点也会有五分、十分甚至二十分。 实际上,在我们近三个月的日常模拟赛中,全部都是按照正式竞赛的规格进行演练的,但每次依然有选手出现以上低级失误,所以各位选手们一定不可大意,务必在交卷前将以上三条逐个检验。
最近呢,很多家长问我这个 csp 的这个考试到底怎么回事?我给家人们回答几个常见的问题。首先第一个,任何人都可以报名,什么意思?就是只要你是幼儿园网上的,你上了小学及以上的孩子都是可以报名的,基本上是没有门槛的,报名费呢,五十块钱就都可以参加。 第二个呢就是他有两轮比赛,第一轮呢是比试,第二轮是上级考试,通过了第一轮呢才可以参加第二轮。 同时 csp 呢有沟和 s 两个级别,这两个级别呢有难以之分,但是呢,没有先后顺序,你可以同时参加沟和 s, 当然前提是呢,你的孩子准备好了, 一般来说,上午参加勾的比赛,下午参加 s 的比赛。再给家人们讲一讲报名中常见碰到的一个些问题。之前呢,给家人们介绍过如何去报名这样一个 csp 比赛,很多家人有一个问题说,老师,我在 选择我的学校的时候,在这个里面呢,找不到我所在的学校,那怎么办?家人们有两种办法,第一种,第一种办法呢,就是你去你所在的学校找到你们学的信息学老师,就是电脑老师,让他呢去官网上进行注册,注册入口呢就在报名的地方啊,叫做教师注册。 那等到你的老师注册好之后,这个地方呢就会出现你所在的学校,当然啊,如果你的老师不太配合,你也可以选择去找到你们省,省会城市也会有相应的个人报名的考点。好吧,当然有些省份是没有个人报名的,那你就只能采取第一种方式了,加油吧!
上期视频说了 csp 的初赛,这期视频我们来聊一聊复赛。十月的第二个周的周日是复赛的比赛日,是正式的。 csp 比赛也分为入门组和提高组,一共四道编程题,每道题一百分,满分四百分,这一百分的构成。 你编写一个程序,系统自动输入一组数据,程序处理之后产生一组数据,如果输入的和输出的是匹配的上,那就会给一个测试点的分,题目会有十到二十个测试点, 有些测试点是特别设置,用来增加题目难度的,如果选择的解题算法不是最优的,或者编写程序时想的不够全面,那就会丢掉某个测试点的分。 csp 的复赛会产生省一等奖、二等奖和三等奖,每个省的 奖项分数线也是不同的,强省的省一等奖有时甚至高达两百八十分,这就意味着你大体要能做对三道题,而弱省一百分就有可能拿到省一等奖。 十一月份的第二个周的周日会举办教育部认可的 noip 比赛,这是信号赛,在省内最重要的比赛。 csv 杠 s, 也就是提高主的优秀选手 会有名额参加 noip 的比赛。在强省参赛的资格限定是比较严格的,通常要求提高者的省一等奖,而且必须是高中生,而弱省就比较容易获得参赛资格。除了在 csp 的复赛中取得了好的成绩,有资格进入 noip 之外,还有一些推荐名额, 比如 noy 的认证老师会有一个推荐名额,省特派员会有十个推荐名额,考点所在的学校也 会有推荐名。我是中国计算机学会 pta 组委会副主席,这是我从事编程教育行业的第二十年,也是我指导青少年参加新奥赛的第七年。关注我,下期视频听我继续分析信息学奥赛。
信息学奥赛为什么那么多人考零分?相当多的一部分孩子参加普及组竞赛都是零分,甚至连续两年仍得零分的不在少数,这并不奇怪,要知道,部分省份的零分率甚至超过百分之五十。零分就意味着就连第一题你都一分未得。第一题往往是最简单的题目,无需任何算法, 只要能熟练运用 c 加加基本的语法即可。那么,为什么还那么多人考零分呢?我们把去年普及组第一题给大家拆解一下,争取让小白家长都能听明白。 去年普及组第一题是分糖果,题目描述非常长,抽象提议翻译成大白话就是一个小朋友去花园拿了 k 块糖果,给 n 个小朋友分,每人拿一块,大家轮流拿。拿上几轮后,如果剩余糖果不够 n 个人分了,就全部给 花园拿糖果的那个小朋友作为奖励糖果。问,奖励糖果最多能有多少块?编写程序输入三个值,分别是小朋友总数,嗯,糖果总数最大至 l 和最 小。智二输出一个值,最多奖励糖果数。屏幕前的你可以暂停视频,想一想如何解? 最容易想到的做法是使用暴力写循环,在 l 到二的范围内找到 k 块糖果处,以 n 个小朋友的最大余数就可以了。所以可以写出这样几行代码,就可以解除题目了。去年能做出这道题的同学,多数是用了这种循环语句的写法,这个代码能帮助你拿到七十分,并不能拿满分。原因是什么呢? 因为题目给的数据范围后三个测试点是超过十的九次方的,所以这个运算是超时的。那么如何拿到满分呢?咱们可以举个例子,假设有七个小朋友可以分的糖果数最多二十五块,最少十块。咱们首推一下,看看可分配糖果从十开始,每增加一块糖果, 奖励糖果树是如何变化的?当咱们首退一遍后,发现,其实奖励糖果树是呈现周期性变化的,这样一条曲线分三种情况讨论,对应两种结果,最大奖励糖果树 要么是 n 减一块,要么是二二除以 n 的余数,这样咱们的代码就可以改写成两个 f、 l 四的条件语句,这就是一个满分代码了。这两段代码大家可以仔细看看,只用到了最基础的循环语句和条件语句。 所有的小朋友在学习家家的最初阶段,三四次课一个月内就学完了,连复杂一些的数组字符串等于法都用不到,更不要说算法了。这就是我们反复给大家说的,不要贪多,不要好高骛远,扎实学好每一个知识点, 哪怕你快速学到了动态规划图论,还是得零分,有什么用呢?普及组一百分,只需要学好基本语法即可,普及组二百分也仅仅只需要贪心和排序两个算法就够了。 下面我们分析一下去年普及组第一题到底难点在哪里。第一个难点,读题理解提议,大段的文字变量数学符号对于阅读理解能力不好的小学生是有一定难度的,大家平时一定要注意读题的训练。 第二个难点,将实际问题抽象成数学解法。具体到本道题目,就是在 l 到二的范围内找到 k 除以根的最大约束,只要有了这个思路,简单粗暴,直接上循环也能得七十分了。 所以第二个难点其实是思路不清楚,捋半天捋不出个头绪,也就是数学思维不过关。这也是为什么我们屡次强调数学基本功,并且要以数学思维测试作为入门信要的门槛的原因。第三个难点,代码基本功太弱。简单的循环或者条件语句,学生在考场上屡屡出错,写错变量,写错循环次数,写错边界条件等等, 同学们要切记,知识点的学习非常容易,能严谨且灵活的运用是需要花费大量时间训练的。第四个难点就是时间复杂度的计算,在竞赛过程中是要考察代码的执行效率的,到了第二题以后,是要考察算法优化的,所以关于时间复杂度的计算机考量非常非常重要,是每道题目能拿满分的关。 比较奇怪的是,我们碰到的很多学生压根不会计算时间空间复杂度,以及缺乏基本的竞赛基础知识。以上四点你 get 到了吗?