往年很多考生考完复赛会说:
爆零了!
“题目挺基础的,就是不会做”
“题目的每个字都认识,连起来就不知道啥意思了”
“知识点都听过,一做题还是不会”
“数组又开大了”
“该死的freopen又忘写了”
……
复赛为何爆零?
根源还是在于对复赛的题目组成规律和考试技巧掌握不够。
下面就跟着小编一起来聊一聊关于复赛得分那些事儿吧!
赛题组成规律
第一级:裸题
裸题也叫单知识点题,特点是直接考察算法,且算法基本没有什么变化,这样的题在真题中已经不多见了。
第二级:组合题
组合题的特点是由多种算法、技巧组合在一起考察。解组合题时需要读懂题目大意,并且能够拆解出需要运用到哪几个知识点。
第三级:性能题
性能题的特点是需要灵活运用算法做优化,且算法会有变动。主要考虑两个方面:一方面是多知识组合求解题目,另一方面还要考虑大数据范围下的运算性能。如果仅用枚举等暴力思路求解,往往会因超时丢分。
2021CSP-J复赛题型分析
近年的真题,其实已经不会出现裸题了,而且也不太区分组合题和性能题,基本都是组合性能题。
【分析】数学裸题 性能题
考察数学、模拟,属于送分题;
有性能要求,需要数学推导进行性能优化。
【分析】组合题 性能题
考察暴力、模拟、排序;指针数组、排序算法;
有性能要求,需要深人理解并灵活运用排序算法。
【分析】组合题
考察暴力、模拟、字符串;
map标记、字符串处理、多情况判断;
基本没有性能要求,模拟难度大些。
【分析】组合题 性能题
暴力、模拟、数据结构;链表模拟;
有性能要求,需要借助特殊数据结构
模拟难度较大、细节较多。
复赛考试技巧
合理安排考试
1)合理安排做题顺序,先做简单题。
正常来说,每道题的难度是递增的,第一道最简单,第二、三道稍微难一些,第四道最难。(第二、三道考的点不一样,具体还是看情况)。
2)合理安排考试时间划分——二等奖策略。
刚学完语法,只学了些暴力算法,水平较初级的考生就给自己定保1以争2的目标。不要想着做4个题,你就是来做对第1个题的。
第一道题:2个小时保证能拿到80-100分;剩下1.5小时,其他题打暴力算法,争取能拿些分)。S组也同样采取这样的策略。
3)合理安排考试时间划分——一等奖策略。
水平稍好,学过算法的考生,可以制定保2争3的目标。做好第1-2题,就有希望拿一等奖了。尽量把第二题或者第三题也做对,看个人擅长哪一类的算法。
时间分配上是前2个小时把1、2题拿下,剩下的时间共3、4题,(第3题应该是能做的,第4道基本放弃,只拿暴力)
规避典型错误
1)目录结构不要写错
考试时每道题都会有对应的英文名称,一般在D盘或E盘有建好了一个以你考号命名的文件夹,在这个文件夹下面需要建四个子文件,名称分别是这四道题的英文名称(注意不要写错,一般都是小写),在这四个子文件中分别放对应题目的源代码(.cpp文件),不要放其他运行结果等文件,只需放源代码即可。这里非常需要注意,名称不要写错,否则就是直接爆零!
2)文件重定向
竞赛跟平时练习不一样,需要在代码中加上的两句话——freopen.
例如:freopen("water.in,"r",stdin);
freopen("water.out","w",stdin)
("r"是“读”,"w"是写)
这两行代码是写在主函数的最开头,解题代码就写在下面。
注意头文件cstdio记得写,否则就又是爆零了(一般有点经验的同学,都会复制下来,当做一个小模板,每次粘贴进去)。建议大家考前在考前自己试一下,尤其是第一次参加的同学。
3)代码编写上的爆零
注意主函数的返回型必须是int,程序结束必须返回0 。
在实际写代码中,还要注意避免数组问题而爆零。比如开一个10000*10000的数组,编译是没有问题的,但是实际上提交上去之后就有限制了。这种错误失的就不是部分分了,是全部0分。
4)关于头文件
例如memset需要头文件<cstring>,不引就错了。这个爆零,大家在本地写代码,不写头文件是没事的,但是提交上去之后的环境就限制死了,会直接爆零。所以,需要注意常用的函数对应的头文件。
还有一个关于万能头,引万能头容易出现错误,需要在命名的时候避免一些比较直白的单词了,一定要偏一点。
信息学竞赛是一场艰难、持久的挑战。
一方面,比赛难度逐级攀升。不仅考代码能力,更是要从阅读题目、分析题目、分解知识点,考虑性能问题,优化解决方案等多方面考察考生的能力。
另一方面,实际竞赛过程中氛围上的紧张感、时间上的紧迫感,都非常考验考生情绪管理、时间管理等考试综合能力。
因此我们建议各位考生:信奥之路,基础为重。打好基础,考试无忧。
咨询课程,请私信小编,并留下联系方式