1、1初中信息学奥赛复赛辅导策略慈溪上林初级中学 邹仲杰摘要全国信息学奥林匹克分区联赛复赛主要为了提高学生创造性地运用程序设计知识解决实际问题的能力。参赛辅导主要从扎实掌握算法和数据结构、调整好考试心态、把好审题关、重视调试等几个方面入手,以提高学生的解决实际问题的能力。关键词 信息学奥赛 指导 策略 全国青少年信息学奥林匹克及其分区联赛活动,激发广大青少年对信息技术及其应用的兴趣,比赛对青少年学生开阔眼界,扩大知识面,培养逻辑思维、创造思维及应用计算机解决实际问题的能力都有很大促进作用。信息学奥林匹克的核心是程序设计算法,竞赛的复赛是对学生进行解决实际问题能力的考核。近几年来,浙江省的信息学竞赛
2、正涌起一股新的热潮。但综观全国联赛信息学奥林匹克及分区联赛复赛,优秀选手总是集中出现在几个学校,如浙江省普及组主要集中在绍兴华舍、绍兴建功、余姚实验、镇海蛟川、慈溪上林等学校。其它学校复赛成绩不理想,问题主要出现在两个方面,一是教师平时辅导中重理论知识指导,轻动手实践训练,导致学生缺乏调试程序的能力;二是学生没有调整好心态,没有充分发挥自己的实力。根据这种情况,要求我们改变辅导策略,全面提高学生动手实践能力、分析问题解决问题的能力,全面提升复赛程序调试的能力。从而全面提高学生的信息素养及创新能力。具体做法如下:一、 指导学生掌握比赛要求信息学复赛要求学生在 3 个小时内应用语言完成 4 个求解
3、问题,它的核心是数据结构和算法的整合。因此在学生掌握语言的基础上,教师要逐步给学生讲解栈、队列、树、图、排列与组合、高精度运算、排序、搜索、分治、动态规划等知识。并综合各种知识解决实际问题,教师尽量选择应用经典例题,深入探讨。让学生实践,达到正确应用。实践可分三步走:1、互相讨论。信息学竞赛的难度大,变化大,一个题目经常有好几种方法,学生有时会想到许多连老师也想不到的算法,学生之间的交流及师生之间的交流是解决这类问题的好途径。2、上机实践。把经典的例题及精选习题让学生去充分调试,教师只做好测试数据,把他们所有做过的习题进行测试。通过测试随时调控学生掌握情况。通过这样的练习,学生会更加清楚自己的
4、不足和需改进的地方,更好地改进自己设计程序纠正一些的小错误,让自己的思维更完整更严密。3、总结提炼。让学生根据上机测试情况,学会自己写解题报告或论文。实践证明,写的解题报告能使学生对知识进行重温、归类、总结、提炼。如果学生这类解题报告和论文都能完成,那么学生对掌握与运用已相当熟练、灵活。二、帮助学生调整参赛心态任何竞赛都一样,考试前一定要调整好心态、摆正位置。我一直对学生说,退一步海阔天空。期望值放低点。重要的是发挥自己的实力,把会做的题做对,就是对自己的挑战。自己不要着眼于考多少分,而是我得了几分啦,每做出一题,你就对自己说我又得了几分,这样每做一题都处于精神兴奋之中,有利于发挥。1、帮助分
5、析形势,确立积极参与心态。我这里引用一句吴文虎教授的话“体育奥林匹克是对身体极限的挑战,而信息学奥林匹克是对智力极限的挑战” ,信息学竞赛是用来证明自身的能力的工具。竞赛要放弃功利性,学习编程要明确学习目的是,做自己喜欢的事。我常常教导学生,2假如参加信息学是为了加分,为了走捷径升入高一级学校,那你就不要来学。学生想加分来参加竞赛的,多半一段时间没出成绩就会放弃,即使出了成绩,这些人认为目标已经达到,也会出现放弃的愿望。只有真正培养学生对信息学的兴趣,做它喜欢的事,才会学得更好、更扎实。2、消除紧张情绪,提高成功参赛斗志。一般在比赛前,我都会观察学生的细节,对于比较紧张的学生,我会找机会让他们
6、放松一下,让他们玩一会儿游戏,个别谈话或者看看喜剧片。对于个别同学,平时其它竞赛也失常的同学,一定要仔细分析。记得 2005 年的分区联赛中,我的一个学生杨可星同学,虽然只学了半年时间,我认为他已经具有一定的实力,但比赛之前,他不停地问我一些很基本的问题,如要不要建文件夹,文件输入输出怎么办?当时我也没怎么在意,只是随意地跟他说一下。因为这些内容我已经在考试之前模拟过 N 遍了。正是我的疏忽,他在考试中严重失常。赛后我找他谈话。他说实在是太紧张了。手一直抖,脑子里基本上是空白,平常会的知识点全忘记了。今年比赛前我多次跟他谈心,进行心理辅导,结果今年发挥出色,取得初赛省里第 5 名、复赛满分的好
7、成绩。3、及时总结教训。在赛前赛后经常给学生们总结比赛中出现的状态问题,分析原因及对策。纠正急于求成,太渴望得奖等心态。三、培养学生提高审题能力信息学奥赛复赛是对每一位学生综合能力的检测,包括分析问题、发现规律、确定算法、编写程序、测试完善等各方面,在比赛中需格外小心,特别是在审题是要仔细分析确定算法。平时辅导学生要指导学生在审题注意以下问题:1、根据题目考虑时间复杂度、空间复杂度及范围。尤其要注意问题的规模(数据范围) 。从某种意义上说,问题规模也暗示了你可能的算法。数据小(一般 n=25) ,也许是搜索派上用场的时候;数据大,可能只能考虑动态规划、数学方法等高效算法。有些根据数据规模可能要
8、用上高精度。如最短路径 (城市交通 ) 有 N 个城市,编号 1-n,有些城市之间有路相连,有些则无,有路则当然有一个距离。如下图为一个含有 11 个城市的图,连线上的数(权)表示距离。现在规定只能从编号小的城市到编号大的城市,问你从编号为 1 的城市到编号为 n 的城市之间的最短距离是多少? 键盘输入第一行为 n,表示城市数,n=200,下面的 N 行是一个 n*n 的邻接矩阵mapI,j,其中 mapI,j=0 表示城市 I 和城市 J 之间没有相连,否则为两者之间的距离。这个题目用深搜可以过部分点,但要想全部点都过,只能用动态规划。2、考虑问题是否有隐含条件并进行优化。问题描述是题目的关
9、键,含有题目条件。解题关键是将条件认真分析、加以整理、发现隐藏在其中的规律。先将可能出现的各种情况一一列举,再构思解答问题所必需的模型。这是解题的基础,也是解题的核心。学生必须在这个环节上花大量时间,形成自己的思路后才去做题,切忌边编程边思考。3、根据自身水平,能过多少点就过少点,选择适合自己的算法,比赛切忌强求。要求学3生在比赛中能根据自己的实力,如上例中,假如你不会用动态规划的状态转移方程,那么就直接用深搜吧,至少可以过一部分的点。四、训练学生强化调试技能经常有同学在复赛后表示,一个题目本来是可以运行的,但最后交上去之前修改后就不能运行啦。其实出现这个问题的关键是调试。有时候只要稍作改动,
10、就可以变 0 分为 100 分。建议学生在运行前自己通读自己写的程序,尽量仔细,重点查全局变量和局部变量和几个比较容量打错的字母,然后充分运用下面的一些常用技巧。1、Ctrl+F9:这是每一个初学者都会的,能够显示结果或错误,比较适合很多新手,但仅仅只能说你的程序语言是对了,最后的结果不一定正确。2、F8 能够逐步显示程序的运行过程,适合一般人逐步检验自己的算法,以改正其中细微的错误。但相对比较繁琐,尤其是对于子程序和过程,本方法无效。3、Debug 中的 Watches 命令。这是比较推荐的一种方法。 键入回车后,用右键单击 New watch 输入新的要查看的变量,然后用 F8 运行。4、
11、直接在程序中用 Wrtie 命令输出某些步骤中的结果(前提是自己预先算出结果) ,进行比较,然后分步修改,直到输出正确的解。用这种方法的同学一定要记住,如果先用文件编的,要先打上括号的,调试结束后先删去不必要的输出语句,再取消括号。5、投机取巧。有些同学检查了很多次,却始终得不到正解,于是只好放弃,白白地失去了100 分。其实,有时只要将其中的符号改反、添加一些赋初值的语句、修改数据类型等。6、设计合理的测试数据的。主要包括极限值和特殊值。 极限值包括最大值和最小值。有些题目有特殊值,根据实际题目而定。7、改变算法时先备份。有些同学根据自己水平,可能会采用保守的算法,过部分点,然后觉得自己还有
12、时间,就去做优化算法,这时候记得一定要做备份。同时提醒大家,最后作修改时一定要备份。防止出现因修改而出现的调试出错,程序无法运行等情况。8、在信息学竞赛允许范围内充分应用自己的知识。有些题目没有思路的情况下尽量用搜,或者用数学方法套出一些特殊情况值,直接用 case 语句输出。实在不行,输出样例或者你认为最有可能出现的情况把它用程序表达出来。总之,信息学奥赛为广大同学提供了展示自己才华的舞台,只要掌握了基础的算法和数据结构知识,调整好自己的心态,认真审题,并对题目进行充分的调试,就能在信息学竞赛中获取好成绩。事实证明,世上无难事,只怕有心人。笔者所带学生在近两年来就有 11 人获全国青少年信息学奥赛(浙江赛区)普及组一等奖就是一个很好的例子。参考资料:全国青少年信息学奥林匹克竞赛培训教材 吴再陵 南京大学出版社浙江省慈溪市上林初中级中学 邹仲杰e-mail: