2.4 找准位置,水滴石穿

        考试时的方法多数不是“灵机一动”现场创造出来的,而是平时刻苦训练中积累出来的。
俗话说得好,“水滴石穿”,但“水滴未必石穿”,如果水根本没有滴到石头上,或者恰好滴
到了最坚硬的位置,即使费劲九牛二虎之力,也未必能够“穿石”。所以,只有“找准位置”,
再加上时间的积累,才能达到“水滴石穿”的效果。
信息学竞赛平时的训练也是如此,如何在有限的训练时间内达到更好的效果,就是本文
与读者共同探索的方向。不仅是在考试时要讲究应试策略,平时的训练也要讲究方法,讲究
技巧,才能“事半功倍”,收到较好的效果。
        书籍推荐:绿书+蓝书(青少年信息学奥林匹克竞赛培训教材 系列)、算法导论(也是
黑书)、粉书(全国青少年信息学奥林匹克联赛培训教材)、黑书(算法艺术与信息学竞赛 建
议水平高的人看)、新编实用算法(建议水平高的人看)
建议参加 NOIP 的选手将绿书、蓝书、粉书全部看完,再看一些算法导论中的基础内容。
参加 NOI 的选手应将算法导论看完,算法艺术中不是特别难的题目看完。
        题库推荐:PKU(顶级推荐,题目质量高,题库影响力大,不仅学信息学还能学英语)、
Usaco(强烈推荐,很经典的题库,Nocow 有翻译)、Vijos(一个非常不错的中文题库)、Ural
(水平有所提高了可以去做做,也有很多经典题)、Rqnoj(题目质量不是太好,不过也是一
个题库)
        建议参加 NOIP 的选手以做中文题库为主,由于当前命题趋势越来越简单,所以 Vijos、
Rqnoj 都是不错的选择。笔者 NOIP 前,在 RQNOJ 上通过了 286 题,位居第一名 2 ,最终在
NOIP2008 中取得了 330 这个不错的成绩。练好简单题,算法一眼看出,程序直接敲上,保
证一次 AC,也是一种难以达到的水平,代表着选手对编程语言的熟悉程度,在今天的 NOIP
中有着得天独厚的优势。尤其提醒以“拿一等奖”为目的的选手,不要盲目钻牛角尖、死抠
难题,这样浪费了时间,因为 NOIP 并不考这样难的题目。
        建议参加 NOI 的选手做一些难题,如 PKU 就是不错的选择。以 NOI 为努力目标的 NOIP
选手,在备战时诚然应该做一些难题,为将来打基础,但更重要的是练好基础,保证进入NOI。
笔者所在的竞赛小组就有几位难题实力很强的选手因为考试时紧张,出现了低级错误,未能
进入省队,令人惋惜。NOIP 结束,才可以抛开水题,全力攻坚。因为信息学竞赛不同于其
他学科竞赛,省赛、全国赛之间有很大的时间差,这时猛攻难题是完全来得及的。
知识来源 :40%来自于书本、40%来自于做题、20%来自于网上其它的资料。
        Cai0715 的 OI 技巧
1、 学会总结 ,我基本上每学完一个章节的东西就会拿多一段时间来进行总结。总结的
时候,先列出一个目录,把这一节学到的知识点写进去。然后在下面分别拓展出这个知识点
的原理、用途、编程流程、关键代码、优化、和其它同类算法的比较、复杂度估计、模块化
代码、相应习题等等。这样,可以很容易的把一个一个的知识点串在一起记住它。(附录里
有我的总结样例)
2、 要拿出一定的时间看书 ,书是人类进步的阶梯。相信很多 OIer 都很喜欢做题,忽
略了看书这个重要的环节。其实只有阅览群书,才能学到更多的知识。例如,某个算法你会
N^3 的算法,但是某本书上用 N^2,甚至 N 的复杂度就给解决了。如果不看书,如果考试正
好出这个知识点,或许你就只能拿部分分了。
3、 合理安排时间 (特指放假或集训的时候)。清晨 7 点到 9 点这段时间,是人们头脑最
清醒的时间,这个时间段内,尽量不要去调程序,可以去做一些其它的事情,比如看书、总
结等等。而 9 点之后这段时间,建议去做题,这个时候一般花一个小时就可以编出在其它时
间要花一个半小时才能编出的程序。到了中午,吃完饭一定要睡觉,否则下午会很没精神,
效率会很低的。下午呢,一般就比较综合了,比较随意了,可以自己安排。晚上,我一般都
是继续调程序,因为想不出晚上干什么会高效一些。
4、 学会适当的休息 ,不要长时间干同一件事情。当你编程序进入了一个死角的时候,
或许思维会很混乱,总想找出错误或优化这个算法,但是一片空白,很盲目。这个时候,你
真的需要休息。去外面小小的溜达一圈,看一看窗外的风景,这样就可以换一个心情,换一
个思维。在你休息完之后,你会发现,刚才你之所以找不出错误,是因为身在此山中。
5、 养成编代码的良好习惯 ,这个各位可以参考其它大牛的程序。我的程序一般都是用
过程堆起来的,每个程序必有的 Init 和 Main 过程,可能 Init 里只有个 read(n),但是为
了保持程序美观,完整个人的习惯,还是单写了一个过程。但是不要大量的调用过程,比如
在某个 3 重循环里调用过程,因为调过程也是需要一定时间的。除了这个,我还在每个过程
中间添加了一个分割线,以便阅读。还有,各位还需要注意换行、空格等问题,养成良好的
习惯,尽量使其美观,方便阅读(附录里有代码样例)。
6、 学会心理暗示 。这个也是很重要的,当你做不出某个题的时候,一定不要乱,心理
默默的暗示自己,既然自己不会,别人做起来一定也不会舒服。当你做出某个题,一定不要
盲目的高兴,要把自己的思维控制住,这样才能用形象的思维去做下一个题,所以我们一定
要暗示自己,这个题自己会做,别人做起来也会很容易的,不能骄傲。
7、 学会抗干扰 ,干扰有很多类,大概就是人为、自然因素。人为因素,当别人早早的
做完题或者别人在说话、讨论的时候,一定要控制住自己,不要慌乱,否则你可能会编的程
序最后得个 0 分,所以一定要在众多次干扰中,积累抗干扰的经验。自然因素,当太阳直射
你的时候、当寒风呼啸你的时候、当键盘生硬难敲的时候、当屏幕反光的时候,你一定要学
会去适应,因为很多时候在考场上会出现这样或者那样的问题,给你的只有 3 个小时,没有
多余的时间去考虑这些无关的问题,只能适应。综上所述,抗干扰很重要,即使没有干扰,
我们也可以为自己去制造干扰。
8、 写程序的流程要合理安排 ,这个很重要,也是非常重要的。我就把自己是怎样做的
写出来吧,可能不是太好,只是一个借鉴。1)我会用大概 5 分钟左右去完整的阅读题目,
因为多一点时间阅读题目,总会有意想不到的发现。2)用 10-15 分钟的时间去设计算法,
要尽量躲避第一印象思路,因为这个思路往往是错的,设计算法不仅要证明这个算法的正确
性,还要从时间、空间等因素来考虑是否,千万不要很草率的结束这个过程,因为当编完程
序再来改正错误的算法,往往会浪费更多的时间,例如说高一的我,看见题就想做,大概理
出了思路就去编程,但是反过头来发现,其实是错的,结果浪费了时间不说,心情还很不好。
3)利用 5 分钟的时间写出程序的框架,第一步该干什么,第二步又该干什么,一步一步的
写出来,再对每一步进行一些拓展,写出关键的伪代码等等。这样,才能让自己在编程的时
候条理性清晰,才能降低出错的几率。4)编程 10-20 分钟,前面的工作都做好了,这个过
程应该是非常容易的,注意不要犯打错变量等低级错误就行了。5)查错 10-20 分钟,往往
第一次编出的程序都是错的,具体的查错技巧下面会写出来。这样,一个程序就算写完了,
我这个算法流程只是提供一个参考,具体每个流程的时间大家可以看情况去安排,一般简单
程序 30 分钟敲完,中等点的 50 分钟,难点的 1 个小时左右。这样才可以更上 NOIP3 个小时
的节奏。
9、 静态查错 。这个是很重要的,也可以说是非常重要的。何谓静态查错,就是编完代
码之后,不去干其它事情,只是安静的从头到尾的把自己的代码阅读一遍,比如说普通的编
译错误、变量是不是打错了、数组开的够不够大、程序的逻辑性是不是还存在问题等等。这
个时候,一般是很容易发现错误的,并且还会有一种成就感。但是如果你编完之后去测样例,
可能样例是过了(因为样例是很弱的数据),但是其实程序仍漏洞百出,或者测样例都错了,
这个时候会严重影响你的心情,再去查错的话,事倍功半。
10、 出测试数据 是个大学问。测试数据一般分为,小数据、大数据、极限数据等等。所
以我们一定要从这几个方面,各出几组测试数据。小数据可以手算,很容易出结果,相信是
OIer 最喜欢的。极限数据也是指那些边缘数据,比如说某个数据导致你数组越界、被 0 除
等等,一般很多题目都存在一两组这样的数据。大数据的话,一般是去检验程序是否超时间
和超空间,因为结果是否正确,真的很难手算出来,除非很离谱的错误。
11、 检验程序的正确性 ,这个除了设计算法时的证明外,如果有时间允许,我们还可以
写一个效率低但是绝对正确的算法来和原程序进行对比。这样,我们利用上面出测试数据的
学问,加上这个手段,一般可以 80%的判断出你写的这个程序是否正确,进而不断完善。(还
有一个小技巧,就是利用.bat 文件,判断两个输出是否等价。)
12、 善于交流 ,这个就不知道怎么说了,就是多和其它人交流。
其它
1)培养对 OI 的兴趣。
2)胜不骄,败不馁。
3)不抛弃,才有希望;不放弃,才
能成功。
4)天才是 99%的汗水+1%的灵感,对学 OI 尤其适用。
5)学完某个算法时,尽量把
模块化代码保存下来。
6)如果 NOIP 一等奖名额只有 1 个,那么相信自己就是那一个。
7) 制定好目标,分为远大的目标(上哪个大学),中期的目标(拿一等、冲省队、夺金牌),近
期的目标(学会哪个算法、模拟赛要达到多少分)。8)赛前一周多复习,多做简单题,不要
再去钻高难度的题,这是 NOIP 不是 NOI。9)专心致志,学习时就不上 QQ,不上论坛。10)
细心,细心,再细心。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值