前,尽量用多而强的数据去测试想到的算法,毕竟代码写完后再测试就浪费很多时间了
思考算法的时候,一定要考虑到特殊数据,或一些特殊情况。写完了,还要再看各变量是否带对,是否有笔误。
写完后也要:自己设计几组数据,争取卡死你的程序。如果你已经设计不出能卡住你的程序的数据,恭喜你可以做下一题了。
4、永远别去写从未接触过的算法/数据结构(考场上), 同时减少负优化。
i.在内存允许的情况下,能开普通队列就不要用循环队列,能开下普通数组就不要用滚动数组
ii.在时间允许的情况下,能暴力就暴力,高精度能不压位就不压位,优化不需要的就不要
iii.总之,在不超限制的前提下,能不优化就不优化,以减少代码量和出错概率为第一原则
5、如果想不到思路,试着找规律。纸笔都是好的伙伴。

i. 即使这道题看起来再没法做,也不要提早放弃,这个时候纸和笔会是你最好的朋友,自己尝试几个例子,也许你就会找到答案
ii.如果这是一道动态规划题,请先把转移方程写在纸上再编程
iii. 涉及到边界处理、加一减一之类的问题,请在纸上举个例子,标上下标以后,在编程时参照纸上的下标写
6、如果实在想不到思路,就放弃。
i. 如果思考30分钟仍一头雾水,没有可以实现的算法,请你果断屏蔽掉100%的那一栏数据,开始写60%,50%乃至30%的算法——在NOIP里面,30分绝不是小数目
ii. 不要因为一道题的时间丢了后面题目的分数。
iii. 看题要灵活,不要绊死在一道题,不要怕。NOIP的题不想就做出来,怎么可能,肯定是需要想的。但是最好先写好写的题,不一定是前两道题。其实很多时候你是有能力做起的,只是你一看就怕了,也没有去认真想,随便敷衍想了一点特殊情况的算法,认为可以骗到分。但经验证明最后基本是没有分,即使有,最多不过10。时间是3个小时,要积极一点,经验证明,很多题想到一定时候便想出来了。并且很简单。
7、心态
i. 如果你发现你旁边的人写得很快,请你放心,他的算法十有八九是错的
D写完阶段
1、程序按照思路编完之后,查编译错误。经验证明,刚刚完成的程序不出编译错误的几率基本为0。
2、编译全部修正后,千万不要测样例。一定是必要的调试手段。经验证明,第一次就把样例过了的几率很低,即使过了,在测自己的特殊数据的时候也会出错。所以,编译完后一定要静态查错。经验表明,静态查错是很有效果的。基本上每次静态查错都可以找到变量代错的错误。特别是快排的I,J是否带错,DEC,INC是否搞错,SWAP是不是加了VAR等等。
试想:
i如果没有静态查错,就去测样例,如果程序有错,样例不过,影响心情;
ii即使样例过了,因为程序有错,特殊数据也不一定能过;即使特殊数据也过了,程序有错,评测的时候绝对会错。
iii那还不如一开始就静态查,即使发现错误,获得成就感,心情很好。
iv千万不要慌着去测。要保证程序无错,思路清晰,结构清晰了,然后再去测样例,再去测特殊数据。
样例过了不要得意,特殊数据过了不要得意,很有可能还有很多特殊情况你没有想到。
3、如果程序错了需要调试,一定要分模块调试,不要从头跟到尾。【具体转调试技巧】
4、有多余时间一定要进行对拍,即3个程序:生成数据、朴素算法、准备交的算法
5、交之前5-15分钟千万不要再改动代码,主要留意代码中是否还有测试程序时留下的痕迹。
i. 即使你怀疑它对你的一个输入给出了错误答案,因为你自己算出的结果也有可能是错的
ii. 这个时候请你检查是否注释掉了该注释掉的东西,文件名是否写对,文件夹是否建对,请一定反复检查!
E结束阶段
1、走出考场后,除非已经是Day2,永远别对答案 (个人建议)
2、做好心理准备,也许做了两道自己认为会全对的,还做了一道自己认为能过几组的。

下一页 上一页
返回列表
返回首页
©2024 蚌埠市信息技术协会 电脑版
Powered by iwms