一、提早15分钟入场,利用好这几分钟的时间,作好准备工做。
二、静坐调整心态,适当的深呼吸,没关系张、坐立不安等。
三、设置编辑器IDE:i.默认路径 ii.窗口大小 iii.TAB宽度 iv.编译功能 v.重启IDEweb
i 你喜欢的屏幕分辨率。ii 平时惯用的字体。iii 字体大小不要过小方便查错。算法
四、准备文件:i.建立.in .out。 ii.建好模板(头文件,输入输出) iii.测试模板准确无误编程
a. 同时注意文件名,保存要求,目录结构
b.某些省份(如 河南)要求同时提交.exe文件,注意不要漏交。)数组
五、休息|再次调整心态:不要去想结果,只看过程,努力了就必定不会白费。数据结构
一、不要急于看内容,先将试题第一页的时间、内存限制等等一字不落地看完。框架
i 虽然1s+128MB内存 (这是之前的了,如今应该是 1s + 256MB) 是标准配置,不过也不是每道题都是这样的,仍是请认真阅读试卷首页的试题说明
ii. 计算内存的方法:数组大小*类型长度/1000 / 1000=所占内存MB数,int(Pascal:longint)类型长度是4, long long (Pascal: int64) =8
iii. 记不住的话,记住int (Pascal: longint) 型数组在128MB内存下最大开到2500 0000是比较保险的(占100MB内存)编辑器
二、开始看题,看题时不能走神。从新描述并将题目抽象化简,提出主干信息。svg
读的时候积极思考,看看这某句话究竟是个什么意思,要会转换。好比对于有时间的问题,到底把时间当作一个点,仍是一个区间。学习
三、结合样例看题目,确保本身题意理解没有错(若是样例错了回到上一步修改主干信息)。测试
具体题目具体分析,必定要符合题意。题没读懂就开始作,100%是错的。题错,思路也就错,时间浪费了, 数据仍是1个都不过。
四、看完题目后将其纳入某几个框架中,包括:模拟/枚举/搜索/贪心/动态规划/图论/分治
五、根据输入数据的范围大体肯定算法复杂度,如下均是可能状况,不绝对:
20:2^20=一百万,O(2^n),搜索
100:100^3=一百万,O(n^3),Flody/APSP/搜索
1000:1000^2=一百万,O(n^2),动态规划/图论
500000:O(nlog(2,n)),二分答案/二分查找/快排/归并
1000000:O(n)或O(1),数学问题/改变思惟方向/贪心
一、写下代码前,必须保证有充足的思考时间,有成熟的想法后再动手
所谓Think Twice, Code Once, 必定要想好了算法,思路清晰了再编。
对于稍可贵题目:分析问题时遇到一些即兴问起的状况,立刻要深刻下去,看已有的算法思路是否有问题。经验证实,这种即兴提起的问题每每是决定算法正误的关键问题。这是一种本能的质疑,本能的差错,必定不要想:我一会再来看这个问题。必定要当即想清楚,看算法怎么样处理才能解决这样一个问题。确认算法没有什么错误了再编。若是思路没清晰,算法不对,编到一半时才发现错了,这种状况没有考虑到,浪费了不少时间,或者编完了都还不知道算法是错的,最后因为样例特殊,过了样例,觉得对了,但实际上只得10分,或者根本不得分。
对于简单的题:也必定要考虑全面,不是编好了程序再来考虑全面,而是想算法的时候就要考虑全面。不要知道个大概就开始写,后来发现一些特殊数据要做特殊处理,又把程序改过去改过来,改得面目全非,最后总是改不对,不但影响心情,并且仍是错的。
总的来讲:想好算法,写下各个变量的意义,明确使用的时候都是遵守这些意义的。写下关键的句子,分清各类状况,这个阶段最重要,必定要仔细,不要急着编程。理清了思路再编程,写好了关键句子再编程,弄清楚了变量再编程,速度会很快,并且正确率也很高。不少人就是犯不思考就编程这个错误,最后本身就昏了。因而浪费大量时间,并且题也作不出来。
二、不能想一点写一点,就算是输入部分也要在总体思路理清后再写。
三、写代码前,尽可能用多而强的数据去测试想到的算法,毕竟代码写完后再测试就浪费不少时间了
思考算法的时候,必定要考虑到特殊数据,或一些特殊状况。写完了,还要再看各变量是否带对,是否有笔误。
写完后也要:本身设计几组数据,争取卡死你的程序。若是你已经设计不出能卡住你的程序的数据,恭喜你能够作下一题了。
四、永远别去写从未接触过的算法/数据结构(考场上), 同时减小负优化。
i.在内存容许的状况下,能开普通队列就不要用循环队列,能开下普通数组就不要用滚动数组
ii.在时间容许的状况下,能暴力就暴力,高精度能不压位就不压位,优化不须要的就不要
iii.总之,在不超限制的前提下,能不优化就不优化,以减小代码量和出错几率为第一原则
五、若是想不到思路,试着找规律。纸笔都是好的伙伴。
i. 即便这道题看起来再无法作,也不要提前放弃,这个时候纸和笔会是你最好的朋友,本身尝试几个例子,也许你就会找到答案
ii.若是这是一道动态规划题,请先把转移方程写在纸上再编程
iii. 涉及到边界处理、加一减一之类的问题,请在纸上举个例子,标上下标之后,在编程时参照纸上的下标写
六、若是实在想不到思路,就放弃。
i. 若是思考30分钟仍一头雾水,没有能够实现的算法,请你果断屏蔽掉100%的那一栏数据,开始写60%,50%乃至30%的算法——在NOIP里面,30分毫不是小数目
ii. 不要由于一道题的时间丢了后面题目的分数。
iii. 看题要灵活,不要绊死在一道题,不要怕。NOIP的题不想就作出来,怎么可能,确定是须要想的。可是最好先写好写的题,不必定是前两道题。其实不少时候你是有能力作起的,只是你一看就怕了,也没有去认真想,随便敷衍想了一点特殊状况的算法,认为能够骗到分。但经验证实最后基本是没有分,即便有,最多不过10。时间是3个小时,要积极一点,经验证实,不少题想到必定时候便想出来了。而且很简单。
七、心态
i. 若是你发现你旁边的人写得很快,请你放心,他的算法十有八九是错的
一、程序按照思路编完以后,查编译错误。经验证实,刚刚完成的程序不出编译错误的概率基本为0。
二、编译所有修正后,千万不要测样例。必定是必要的调试手段。经验证实,第一次就把样例过了的概率很低,即便过了,在测本身的特殊数据的时候也会出错。因此,编译完后必定要静态查错。经验代表,静态查错是颇有效果的。基本上每次静态查错均可以找到变量代错的错误。特别是快排的I,J是否带错,DEC,INC是否搞错,SWAP是否是加了VAR等等。
试想:
i若是没有静态查错,就去测样例,若是程序有错,样例不过,影响心情;
ii即便样例过了,由于程序有错,特殊数据也不必定能过;即便特殊数据也过了,程序有错,评测的时候绝对会错。
iii那还不如一开始就静态查,即便发现错误,得到成就感,心情很好。
iv千万不要慌着去测。要保证程序无错,思路清晰,结构清晰了,而后再去测样例,再去测特殊数据。
样例过了不要得意,特殊数据过了不要得意,颇有可能还有不少特殊状况你没有想到。
三、若是程序错了须要调试,必定要分模块调试,不要从头跟到尾。【具体转调试技巧】
四、有多余时间必定要进行对拍,即3个程序:生成数据、朴素算法、准备交的算法
五、交以前5-15分钟千万不要再改动代码,主要留意代码中是否还有测试程序时留下的痕迹。
i. 即便你怀疑它对你的一个输入给出了错误答案,由于你本身算出的结果也有多是错的
ii. 这个时候请你检查是否注释掉了该注释掉的东西,文件名是否写对,文件夹是否建对,请必定反复检查!
一、走出考场后,除非已是Day2,永远别对答案
二、作好心理准备,也许作了两道本身认为会全对的,还作了一道本身认为能过几组的。可能只得50。这也是有过的事情。除了作好那几个步骤,没有其余的办法。认了吧。搬块石头砸天,也是没有用的。
三、树立正确的成败观。体验第一,拿奖第二。每每能从失败中学到更多的东西,获得更多的感悟。成功当然好,失败也不错。成事在天。作到了本身作到的,就是另外一种意义上的成功。
一、看题,写题,写完阶段,都应该与比赛彻底同样 二、作题前:合理的分配时间,选择能力范围内合适的题。提早学习题目会用到的知识。 三、作题时:要限时作,好比30mins作,不要死调。 四、作题后:必定要复盘和总结。