一、认真审题审题
对于信息学竞赛来说尤其重要。同一个题目如果数据限制差异大的话,可能难度差异也很不同。
例如:输入A,B.输出A+B的值。如果题目说0<=A,B<=10000,这道题目无疑是一道很简单的题目。但如果题目说0<=A,B>= 0000000000000000000000000000000000000显然就要用到高精度数的处理了。
从某种意义上说,数据限制也暗示了你可能的算法。数据小,也许是搜索派上用场的时候,数据大了,可能只能考虑动态规划,数学方法等的算法了。
二、编码和调试的能力
去年复赛的时候,小编朋友身边的那个选手,打键盘的声音特别大,引得朋友转过头去看他。这时,小编朋友正在写题,他已经写完开始调试了。当小编朋友完成第三题是不由自主的又去看他,竞发现他还在调试题。如此调试能力,试问如何能得?复赛考查的算法并不困难,选手在实现上的问题往往还要大一些。建议(我一直是这样做的)大家:
1.充分利用草稿纸,不要对自己的“心算能力”太自信了。
编程熟练的同学喜欢“一气呵成”,到题目就开始编码。我认为这样不好。做信息学竞赛竞赛题的思维过程是丰富而曲折多变的,考虑问题必须全面。仅凭一时的“感觉”来编程往往是漏洞百出。初学者常常忘记做一些初始化工作(远不止变量赋初值这种较简单的),即使有经验的同学也难免因一时疏忽写出几个错误的语句。较要命的是“感觉”的算法是错误的或者效率太低,而程序编了大半才发现做一些复杂的题目(以前复赛的题目其实没有特别复杂的,但今后可说不准),大多数人多会在分心的时候突然短了思路,不知道下一步该写什么。
2.编码采取自顶向下,逐步求精的方法,调试时采用输出中间结果的办法及时找出错误的地方。可以这么说,思路越清晰,对自己程序的算法和编码越了解,调试也会越顺利(一定不要忽视)。
三、较大限度的发挥自己的水平
看上去是废话,但我必须说,当临近比赛的时候,这一点比提高自己的编程能力重要和实际的多。下面我谈谈从这几届分区联赛中得到的一些启示。
1.正确的估计题目的难度和自己的水平
初学者常常“意气用事”,拿到一道看起来很“爽”的题目就开始做了,其实这样不好。记得N0I第二试的时候许多选手一开始就做第三题模拟题,看起来简单,其实要做好并不容易,所以不少人用了4小时都没有做出来。所以说,必须在平时训练一下对题目的规模,难点,编程调试复杂度等方面的估计,还要注意自己擅长哪方面,编程速度和准确度以及调试能力如何,结合自己对题目的估计,方能正确的选择题目和安排时间。
2.重视测试
能够做的题目常常得不了,这也属于发挥欠佳。但其原因不是自我估计不准,而是考虑问题不全面。一道自己有把握,有信心做好的题目一定要花大力气增加其正确性。
3.评分的标准是测试数据
小编不是鼓励大家“投机取巧”,我的意思是,一道困难的题目如果无法下手,在时间允许的情况下一定要写一个能解一些特殊情况的程序。例如去年分区联赛《旅行家的预算》一题,无解的数据和没有加油站的数据各一个,难道对于这两个情况的程序你还不会编吗?得一些分算一些嘛。还有“导弹追踪”一题有一个数据是升序排列的,难道你不知道这种情况是一次只能打一个吗?很多较优化题目,不要一个字都不写,根据你的“直觉"算法(例如贪心),虽然得不了,也能得一定的分数。反正又不是写解题报告,得多少算多少。
微信扫码关注公众号
获取更多考试热门资料