3月4日,2022年的CSP-JSX补赛就要开始啦,各位信奥选手们,大家有没有准备好呢? 除了刷题提高代码能力之外,还需要注意一些常见错误,一旦犯错,就很有可能会爆0。 接下来,鸭鸭邀请了 山东大学许博士来给大家讲解CSP二轮认证补赛的考试技巧, 一定要认真仔细看完哦! 赛前注意事项 赛事时间 CSP-X ( 小学组 ): 3月4日 14:30-18:00(3.5小时),中间休息30分钟 CSP-J ( 入门级 ): 3月4日 08:30-12:00(3.5小时) 注: 小学组试机时间 13:50-14:20 , 入门级 试机时间 7: 50-8:20 ,各位选手一定要提前到达考场进行试机。 资料准备 身份证、准考证、N95口罩。 入门级和小学组没有身份证的同学,需要准备临时身份证或学生证或者由所在学校出具附有本人照片(加印)的有效证明,并由地市负责人核实签字,进入考场。 无有效证件或证明的选手不能进入考场考试! 注意:建议多带几份准考证,当作备用,以防丢失 。 准考证下载时间 2月28日-3月3日,在报名网站中自行下载准考证, 下载完成后一定要认真查看考试信息。 考试地点 济南、淄博地区:济南市历城第二中学 (济南市历城区唐冶街道唐冶东路1234号) 临沂、潍坊、泰安地区:山东省平邑第一中 学 (临沂市平邑县温凉河路与香山路交汇处-北门) 青岛地区:青岛市城阳第一中 学 (青岛市城阳区流亭街道重庆北路398号) 注: 仅列出了部分地市的考点位置,具体考试地点以准考证为准, 考前 查好出行路线,以免耽误考试。 其他注意事项 考试开始15分钟后不得进入考场,选手全程不得早退! 下面,鸭鸭总结了近几年 CSP中“爆0”的几类常见类型的错误及对应的解决办法 ,希望同学们吸取前人教训,避免“爆零”。 防 “ 爆0 ”注意事项 01 读写基本错误
1. 没有使用头文件cstdio,使用头文件时写错斜杠。 2. 没有使用文件输入输出,输入输出文件名、文件读写模式错误,文件输入输出位置写错,文件输入输出语句英文括号全部写成了中文括号、双引号写成单引号。 3. 调试时文件输入输出注释了,忘记取消注释。 4. 源程序没有按要求命名和放子目录下。 问题分析及解决办法 这类错误归纳为头文件和文件读写错误。在考试调试没有办法轻易发现,因为调试时需要把文件输入输出代码注释掉,这样在提交代码时就会产生诸如freopen和文件名拼写错误或者忘记取消注释的情况。 建议在平常模拟测试时多加练习,考前多写几遍freopen函数。 0 2 细节错误
1. 使用变量定义数组:如 int a[n];或者数组开小产生RE错误。 3. 读入单个字符时没用 while,在 Linux 下读到的是换行符。 4. 有返回值的函数没 return,在 Linux 下会 RE。 5. n 和 m 写反(大样例 n 和 m 相等)。 6. 有写#define int long long 的不良习惯,还喜欢用 STL,导致被卡常数从而 TLE。 8. 没有 define 的习惯, long long类型数据传入 int类型形参。 10.多组数据题目,样例却只给一组,当成单组数据写;部分变量忘记多次清零。 问题分析及解决办法 这类问题出现是因为平时做题过程中养成了粗心的习惯。大致分为这几种类型: 1.阅题不仔细,没注意数据范围导致数组开小或者数据类型int和long long没选择对; 这类错误只能通过细心的训练来尽量避免,平常做题练习过程中养成 先仔细阅读完题目,看完数据范围再开始写程序, 写程序的过程中养 成细心的情况, 并且在写完后进行一次静态查错的操作。 03 竞赛策略错误
1、心态崩盘。一上手发现前面的题做不出来影响心态。 2、死磕一道题,最后也没做出来从而爆零。 3、选择的算法不对从而超时爆零。 问题分析及解决办法 这类问题究其原因就是比赛策略不对,被难题影响心态,耽误做题时间,进而简单题没时间做,丢失应得分数。 解决办法是先把所有题目通读一遍,对每道题解法和算法选择有最初印象,估算出每道题的大概用时。 如果碰到前面的题没调试出正解,可以退而求其次,选择拿部分分数,从而留足时间给剩余题目。 在平常练习中多进行模拟考试的练习,习惯考试时间的限制和做题的策略 。 考试中做题技巧 1、 试机时请把编译器的字体调为平时惯用的字体,尤其是 注意字体中的逗号、点、1、l ;将字号尽可能调大,方便查错。 2、题目通读完后,再找到自己认为*容易的一道题。(非常重要,防止碰到一道难题死磕,耽误做简单题目) 3、如果30分钟以上,仍没有找到破解题目的算法,果断屏蔽掉的那一栏数据,开始写60%乃至30%的算法——在CSP里面,30分绝不是小数目。 4、如果这是一道动态规划题,请先把转移方程写在纸上再编程。 5、 几个常用的复杂度参考: 100以下---可能是搜索; 100~500---N ³ 1000~5000---N ², 100000~500000---NlogN, 500000以上---N或1。 记住int型数组在128MB内存下*大开到2500万是比较保险的(约占100MB内存)。 8、 写完程序后, 不要忙着编译,一定要将代码通读一遍, 进行静态查错。 静态查错请注意以下几个方面: (1)是否写上了using namespace std? (2)数组开得是否够大? (3)变量类型是否正确? (4)memset时,所填的sizeof(XX)的XX是不是匹配?大小是不是正确? (5)外层循环与内层循环的i,j是不是混用了? (6)循环之前,i,j是否定义了? (7)输入数据都输入了吗? (8)程序是在执行你想让它执行的步骤吗? 9、为了万无一失,请你用return 0结束你的程序(建议必须加上)。 10、在内存允许的情况下,能开普通队列就不要用循环队列,能开普通数组就不要用滚动数组。在时间允许的情况下,能暴力就暴力,高精度能不压位就不压位,优化不需要的就不要。 总之, 在不超限制的前提下,能不优化就不优化,以减少代码量和出错概率为第*原则。 11、距离考试结束还有5~15分钟时,不要再改动程序,而是要检查注释是否正确,文件名是否写对,文件夹是否建对,请一定反复检查。 最后,祝各位选手们比赛一切顺利!