codeforces和atcoder是广受竞赛学生喜爱的比赛平台。这两个比赛的题目质量高,都很灵活、烧脑。比赛时长较短(都是两个小时),题目数量多,没有部分分,代码只有全部通过测试点才能获得相应的分数,会实时反馈测试结果并有罚分制度。罚分制度就是每道题目用时超过规定的时间正确提交(例如分钟)都会有相应的扣分,超时越多扣分越多。
noip比赛时长较长(小时),题目共4道,通过部分测试点能得到部分分,不会反馈实时测试结果,每道题没有罚分制度。
所以要想在codeforces和atcoder取得高分,必须快、优、准。分析问题快,方法优、编码准,三者缺一不可。这个比赛中的高手肯定是思维灵活、反应极快、代码基本功非常扎实深厚。
noip比赛某种意义上是达标考试,只要在小时之内能做出来就可以,没有罚时。每道题算法效率低下也能拿到部分分数(甚至错误的方法碰巧对了部分测试点也能拿到相应分数)。所以在noip考试中,部分新手可以凭借暴力手段在考试中通过获得部分分而取得不错的名次。
作为一个有远大目标的竞赛生,平时多锻炼自己的“快优准”,noip系列考试中才能拿高分。所以平时多参加codeforces和atcoder系列比赛是不错的手段。这两个比赛测试没有部分分,会逼迫学生做题时深入思考,尽力寻找最优解。又因为比赛时间短题目多,能很好的锻炼快速审题和反应能能力,会迫使学生在平时的练习中对常用方法反复熟练,以求得考试时编码快速准确。一段时间以后,个人综合能力会有明显提高。
但是这两个比赛也有弊端,学生必须有意识的去克服。以atcoder常规赛为例,两个小时总共六道题。其中前三题往往都是有点思维难度,但实现复杂度不高、思维也不是非常难的题目。对于很多noip一等奖选手,如果选择答好前三题往往会取得相对不错的名次,这也是很多学生为了保持名次采取的策略,总是从容易到难的顺序作答。但是等到作答第四题时可能就没有时间了,所以对能力的锻炼每次比赛都停留在前三题的难度。针对这种情况,如果学生能比较稳妥的把前两题或者前三题做出来,考试时应该选择从第三题开始甚至第四题开始,而不能被考试名次牵着鼻子走。
另外考试结束后研究题解订正试卷非常重要,并不一定要把所有题目都研究透。如果自己每次都是只能做出前两题那么考试结束后就研究第三和第四题,以此类推。
还有,这两个比赛时间短题量大,所以题目的代码量一般都不是很大,重在考核思维。但是noi系列赛事因为时间长题目少,有时候也会出代码巨繁琐的题目,这些类型的题目平时也需要有意识的加强。所以在这两个平台达到一定名次后,个人认为应该减少参赛的频率,转而多参加noi类型的比赛。
最后,初次参加比赛的学生要有得零分的思想准备。抱着学习的心态参赛,重在过程,不要太在意结果,一段时间后一定会有质的飞跃的。