750 likes | 873 Views
信息学奥赛辅导与策略. 上虞市实验中学 谢枝萍. 绍兴市级赛事. 全国青少年信息学奥林匹克联赛初赛( NOIP 初赛). 省级赛事. 全国青少年信息学奥林匹克联赛( NOIP ). 全国青少年信息学奥林匹克竞赛( NOI ). 全国级赛事. 国际级赛事. 国际信息学奥林匹克竞赛( IOI ). 一、信息学奥赛的等级. 二、 NOIP 简介. NOIP 分两个级别:普及组(初中)和提高组(高中) 比赛分为初赛(绍兴)和复赛(浙江省). 初赛时间:每年 10 中下旬 考试形式:笔试. 复赛时间:每年 11 月中下旬 考试形式:上机编程. 选择题
E N D
信息学奥赛辅导与策略 上虞市实验中学 谢枝萍
绍兴市级赛事 全国青少年信息学奥林匹克联赛初赛(NOIP初赛) 省级赛事 全国青少年信息学奥林匹克联赛(NOIP) 全国青少年信息学奥林匹克竞赛(NOI) 全国级赛事 国际级赛事 国际信息学奥林匹克竞赛(IOI) 一、信息学奥赛的等级
二、NOIP简介 • NOIP分两个级别:普及组(初中)和提高组(高中) • 比赛分为初赛(绍兴)和复赛(浙江省) 初赛时间:每年10中下旬 考试形式:笔试 复赛时间:每年11月中下旬 考试形式:上机编程 • 选择题 • 问题求解题 • 程序阅读理解题 • 程序完善题 共4题,每题100分,400分 允许用free Pascal或C语言。 Cena 竞赛评测系统
三、困惑和彷徨——组织管理工作 家长、班主任的的质疑…… 选什么教材… 挑选什么样的苗子? 如何安排辅导时间 暑假辅导的加班工资还没着落呢? 学生的安全问题 初一初二的学生一起辅导吗?
1、精选苗子——不输在起跑线上 组 织 管 理 工 作 • 早行动,选学有余力的学生。 • 留意理科竞赛获奖名单 • 调查统计 • 测试选拔
2、建立梯队——多层次教学 1)初级班(初一年级): • 一般人数相对多些在30、40人左右。主要以攻初赛为主 。 2)提高班(初二年级): • 为10人左右。因为编程到最后经常会演变为一对一的辅导,所以这部分学生的总数建议控制在15人之内。主要以攻复赛为主。 组 织 管 理 工 作
3、落实制度——主教练负责制 组 织 管 理 工 作
落实制度——主教练负责制 组 织 管 理 工 作 主教练职责: 1、全权负责各个环节的业务管理,包括制定计划、成员分工。 2、可以提名1到2个副教练,有所获奖项、奖金的分配权。 3、做好对助理教练的传、帮、带工作。 4、对竞赛活动相关的资料选购、外出取金等费用可向教务处提出申请,报校长室审批。
4、保证时间——暑假是重头戏 • 暑期培训:暑假辅导15-20个半天 组 织 管 理 工 作 初一年级能学完所有的新知识。 初二暑假先复习,然后针对复赛要求练习。 • 开学后培训:双修日半天+ 一节晚自修 初一开学后就连续做模拟卷。从2008—2000年的试卷。 初二开学后针对初赛练习,也做从2008—2000年的试卷。
5、沟通——必须学会的本领 1、争取班主任的支持。 与班主任多交流。有些班主任,不知道信息学竞赛是什么,也不清楚,如果得了奖学生能在中考中有什么优惠,更不清楚初赛和复赛的区别,这就需要我们信息学老师去与班主任多交流。 组 织 管 理 工 作 2、作好家长的工作。 因为信息学和别的奥赛学科不一样,既不参加中考,而且内容又基本脱离课堂教学内容。
6、选好教材 1、全国青少年信息学奥林匹克联赛培训教材:有配套练习,缺少数据结构内容。 组 织 管 理 工 作 2、计算机程序设计入门与提高 周学东 缺少配套练习。
四、辅 导 “策 略” 1、授生以渔 2、形象化算法 3、讲透例题 4、调试程序 5、留意竞赛趋势 辅 导 策 略
形象化算法 • 算法知识相对来说比较抽象。从具体形象的“题目”需要引出,得出具体形象的实现步骤。从而使题目易于理解。 例一:猴子选大王:有N只猴子围成一圈,每只有一个编号,编号从1到N。打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始,数到m的猴子出圈,最后剩下来的就是大王。 要求:从键盘输入N,M,编程计算哪一个编号的猴子成为大王。 〖形象化模型〗:学生围成圈玩游戏 思路:用一维数组存储猴子的编号,s:目前报到哪个数了;j:出局的猴子数;I:环行处理;
begin s:=s+1; if ______then begin a[i]:=false; write(i:4); s:=0; j:=j+1; end; end; until______; end. const maxn=10; var a:array[1..maxn] of boolean; i,j,s,n,m:integer; begin readln(n,m); for i:=1 to n do a[i]:=______; i:=0; {环行处理} j:=0; {出局的猴子数} s:=0; {s:目前报到哪个数} repeat i:=i+1; if i>n then_______; if a[i] then {猴子未出圈} s=m true j=n i:=1
形象化算法 例二:求和(求一个下标为100的数组的和) 〖形象化模型〗:100个人捐款 S:=0 ; {捐款箱子是空的} For i=1 to 100 S:=s+d(i); {d(i)为第i个人手里的钱数}
例三、汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。例三、汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。 后来,这个传说就演变为汉诺塔游戏: 1.有三根杆子A,B,C。A杆上有若干碟子 2.每次移动一块碟子,小的只能叠在大的上面 3.把所有碟子从A杆全部移到C杆上
符合递归条件: 1、需要解决的问题可以化为子问题,子问题的求解方式和原问题相同。 2、递归调用的次数是有限的。 3、有递归结束条件。 汉诺塔问题也是程序设计中的经典递归问题。
题目要求将n个金片由杆A移到杆c可用方法: 1.先(递归地)将杆A上面的n-1片移到杆b(利用杆c); 2.然后把杆A上唯一的一片移到杆c; 3.再把杆b上的n-1片(递归地)移到杆c(利用杆A)。 这是一个递归调用过程。程序如下: procedure move(n:integer; a,b,c:char); {定义递归过程} begin if n=1 then writeln(n,a,c) else begin {多于一片,递归进行} move(n-1,a,c,b); {递归地将n-1片从a移到b,利用杆c过渡} writeln(n,a,c); {最后一个从a移到c} move(n-1,b,a,c); {递归地将b上的n-1个移到c,利用a过渡} end; end;
当程序运行输入n的值时,除3以外也可以选4、5或6,但千万不要输入64。因为通过推导,若按规则移动64片金片,要搬动2^64-1=1.8*10^19次。若每秒钟移动一次,需一万亿年,根据科学推算,地球的“生命”约几十亿年到几百亿年,可见到地球毁灭也不能做完这个游戏。即使让计算机“搬”,每秒搬一亿次,也要用5800年,可见要完成这个游戏是不可能的。当程序运行输入n的值时,除3以外也可以选4、5或6,但千万不要输入64。因为通过推导,若按规则移动64片金片,要搬动2^64-1=1.8*10^19次。若每秒钟移动一次,需一万亿年,根据科学推算,地球的“生命”约几十亿年到几百亿年,可见到地球毁灭也不能做完这个游戏。即使让计算机“搬”,每秒搬一亿次,也要用5800年,可见要完成这个游戏是不可能的。
调试程序 经常有同学在复赛后表示,一个题目本来是可以运行的,但最后交上去之前修改后就不能运行啦。其实出现这个问题的关键是调试。 1、Ctrl+F9: 能够显示结果或错误,但仅仅只能说你的程序语言是对了,最后的结果不一定正确。 2、F8: 能够逐步显示程序的运行过程,但相对比较繁琐,尤其是对于子程序和过程,本方法无效。 3、Debug中的Watches命令。 这是比较推荐的一种方法。 键入回车后,用右键单击New watch输入新的要查看的变量,然后用F8运行。 4、不需要的语句打上{} 。
6、设计合理的测试数据的。 主要包括极限值和特殊值。 极限值包括最大值和最小值。 • 7、改变算法时先备份。 有些同学根据自己水平,可能会采用保守的算法,过部分点,然后觉得自己还有时间,就去做优化算法,这时候记得一定要做备份。同时提醒大家,最后作修改时一定要备份。防止出现因修改而出现的调试出错,程序无法运行等情况。
竞赛趋势 1、珍惜培训机会 2、浙江奥赛qq群:32422590 74630803
选择题考试内容总结: • 1、进制转换是必考的 • 2、堆栈是必考的 • 3、二叉树性质、遍历必考的 • 4、逻辑运算 • 5、微机原理必考的(CPU、ROM等) • 6、排序算法的分析,概率较大 • 7、IT文化和信息学奥赛相关的知识 • 8、信息安全,概率较大 • 9、网络有关知识
IT文化 • 1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。 • A. 沃尔夫奖 B. 诺贝尔奖 C. 菲尔兹奖 D. 图灵奖 图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人。其名称取自计算机科学的先驱、英国科学家阿兰·图灵。
与奥赛活活动相关 • 2. 在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。 • A. gcc/g++ B. Turbo Pascal • C. RHIDE D. free pascal
微机原理 • 3. 以下断电之后仍能保存数据的有( )。 • A. 寄存器 B. ROM C. RAM D. 高速缓存
微机原理 • 4. CPU是( )的简称。 • A. 硬盘 B. 中央处理器 C. 高级程序语言 D. 核心寄存器
微机原理 • 5.在编程时(使用任一种高级语言,不一定是Pascal),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。 • A. 没有区别 B. 按行读的方式要高一些 • C. 按列读的方式要高一些 D. 取决于数组的存储方式。
分析 • 1、从读取上说没有影响 • 2、关键是在数组中的保存,或者说在内存中的寻址并保存。 • 3、如果系统是按照行优先编址的,则行优先效率高,否则消耗在寻址上的时间会很高。
逻辑运算 • 6.在Pascal语言中,表达式 (21 xor 2)的值是( ) • A. 441 B. 42 C.23 D.24
分析 • 1、21转化为二进制为10101,2转化为二进制是10。 • 2、xor表示异或操作,含义是“相同为0,不同为1”。 • 3、列竖式计算: • 10101 • 00010 • --------- • 10111=23
进制转换 • 7. 与十进制数1770 对应的八进制数是( )。 • A. 3350 B. 3351 C. 3352 D. 3540
分析 • 1、关键是搞懂十进制转化为二进制的原理。 • 2、借鉴十进制转化为二进制的做法,采用“除8取余法” 2 8 1770 221 5 8 8 27 3 3 3 8 0
进制转换 • 8. (2010)16 + (32)8的结果是( )。 • A. (8234)10 B. (202B)16 • C. (20056)8 D. (100000000110)2
分析 • 1、4位二进制与16进制数一一对应;3位二进制数和8进制数一一对应,所以可以先转化为二进制数看看,判断D是否满足 • 2、D判断的同时,B也可判断了 • 3、A和C都涉及到十进制数,所以先把表达式转化为十进制数,然后再判断答案为哪个。
信息安全 • 9. 在计算机中,防火墙的作用是( )。 • A. 防止火灾蔓延 B.防止网络攻击 • C. 防止计算机死机 D. 防止使用者误删除数据
算法与编程常识 • 10. 在下列关于计算机语言的说法中,不正确的是( )。 • A. Pascal和C都是编译执行的高级语言 • B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上 • C. C++是历史上的第一个支持面向对象的计算机语言 • D. 与汇编语言相比,高级语言程序更容易阅读
分析 • 1、高级语言是基于编程系统来编译的 • 汇编语言比高级语言更接近CPU,是直接和操作系统交换指令的。 • 2、第一个面向对象语言是smalltalk
算法与编程常识 • 11. 在下列关于计算机算法的说法中,不正确的是( )。 • A. 一个正确的算法至少要有一个输入 • B. 算法的改进,在很大程度上推动了计算机科学与技术的进步 • C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性 • D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法
分析 • 1、本题出现过好几次 • 2、本质就在考你一个误区:算法是否必须要有输入?其实输入不是必须的,而输出是必须的。
算法与编程常识 • 12. 在下列各种排序算法中,不是以“比较”作为主要操作的算法是( )。 • A. 选择排序 B. 冒泡排序 C. 插入排序 D. 基数排序
分析 • 1、基数排序是基于“分配”和“收集”的排序 • 2、即使不懂基数排序,知道了前3者排序的本质是“比较”和“移动”,通过排除法也是可以分析出正确答案的。
逻辑运算 • 13.在Pascal语言中,判断a不等于0且b不等于0的正确的条件表达式是( ) • A. not a=0 or not b=0 B. not((a=0)and(b=0)) • C. not(a=0 and b=0) D. (a<>0)and (b<>0)
分析 • 1、前面几个不懂没有关系,抓住D答案正确即可。
数据结构 • 15.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。 • A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 • C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2
模拟堆栈的操作即可 • 1、堆栈操作特征: • (1)FILO,LIFO • (2)每次只在一段进行操作 • 2、模拟操作 • (1)”进、出“,出站为1 • (2)”进、进、进、出、出“出站为4、3 • (3) ”进、进、进、出、出“出站为7、6
17. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。 • A. a, b, c, e, d B. b, c, a, e, d • C. a, e, c, b, d D. d, c, e, b, a
数据结构分析 • 1、分析题意要正确。依次入栈指的不是”连续入栈,入栈之间没有出栈“。 • 2、接下来的关键是运用堆栈的操作特征。 • (1)对各个答案模拟入栈和出栈操作,是否有矛盾 • (2)对于答案C” a, e, c, b, d “,既然e(最后入栈)在a后面出现,说明e出来时剩余字母都在堆栈中,而这些字母是顺序入栈的,那么出栈肯定是倒序,而这里没有倒序输出”c,b,d“,显然错误。
数据结构 • 18. 已知6个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,则该二叉树的可能的中根遍历是( ) • A. 3 2 1 4 6 5 B. 3 2 1 5 4 6 • C. 2 1 3 5 4 6 D. 2 3 1 4 6 5
分析 • 1、知道后根(或者前根)遍历和中序遍历,可以唯一确定一棵二叉树。但知道后根和前根是无法唯一确定一棵二叉树的。原因是对于根节点下面的节点我们无法根据前根和后根确定左右子树的根(可能只有某个子树)。 • 2、根据前根遍历和中根遍历,计算后根遍历是否满足试题顺序。