参加noip需要哪些知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参加noip需要哪些知识相关的知识,希望对你有一定的参考价值。
参考技术A 分类: 教育/学业/考试 >> 高考解析:
初赛考的知识点,大纲如是说:计算机基本常识/基本操作和程序设计基本知识。选择题考查的是知识,而填空/问题解决题更加重视能力的考查。一般说来,选择题是不需要单独准备的 -- 也无从准备。只要多用心积累就可以了。到是问题解决题目比较固定,大家应当做做以前的题目。写运行结果需要多做题目,培养良好的程序阅读和分析能力,而完善程序最好总结一下以前题目常常要你填出来的语句类型。
1)选择题 一般它们是比较容易得分的,一共30分,不可错过!
以前我建议大家找一本等级考试二级的书看,知识讲的系统一些。说选择题一般不超过二级的知识点,现在显然已经不适用了。近几年来,初赛的考查范围有了很大的变化,越来越仅跟潮流了。这是好事情,不过需要大家有比较广泛的知识,包括计算机硬件,软件,网络,数据结构(例如栈,队列,排序算法),程序设计语言以及一些基本的数学知识和技巧(例如排列组合)。
2)填空/问题解决
这部分题目对数学要求要高一点,往往考查的是代数变形,数列(一般是考递推),也考查 一些算法和数据结构知识。建议大家多花一点时间做,尽量做对。
例题: 1.数组A[30..100,20..100]以行优先的方式存储,每个元素占8个字节,且已知A[40 ,30] 的地址为2000,则A[60,90]的地址为:_________________ 如果以列优先存储,则为:_________________
考查了数据结构中数组存储方式。
^^^^^^^^ ^^^^
2.设栈S的初始状态为空,现有6个元素组成的序列1,3,5,7,9,11,对该序列在S 栈上依 次进行如下操作(从序列中的1开始,出栈后不在进栈):进栈,出栈,进栈,进栈, 进栈,进栈 ,出栈,进栈,问出栈的元素序列是:_________,栈顶指针的值为______ 栈顶元素为:___________________
考查了数据结构中的栈。
^^^^^^^^ ^^
3.把中缀表达式写成后缀及前缀表达式 (1) (P+Q)*(A-B)/((C+D)/(E-F))-G
后:_________________
前:_________________
(2) A-C*D+B/E*(D/A)
后:_________________
前:_________________
4.根据后缀表达式,写出前缀及中缀表达式
ABC/DE+GH-/*+
前:_________________
中:_________________
这两题实际上考查了数据结构中的表达式树
^^^^^^^^ ^^^^^^^^
5.用一个字节来表示整数,最高位用作符号位(1为正,0为负),其他位表示数值,
(1)这样的表示法称为原码表示法,表示数的范围为:_________________
(2)原码表示法,将出现_________________有两种表示
(3)实际上计算机中是用补码表示数,其表示范围为:_________________
考查了数的原码,补码表示。
6.已知N*N个数据成方阵排列:
A11 A12 A13 ... A1n
A21 A22 A23 ... A2n
...
An1 An2 An3 ... Ann
已知Aij=Aji,
(1)将A11,A21,A22,A31,A32,A33... 存储到一维数组A(1),A(2),A(3)...A(K)
给出i,j 写出求K的表达式:_________________
(2)将A11,A12,...A1n,A22,A23,...A2n,A33... Ann存储到一维数组A(1),A(2),
A(3)...A(K), 给出i,j 写出求K的表达式:_________________
7.已知一个数列U1,U2,U3...Un...,往往可以找到一个最小的K值和K个数a1,a2,..,ak, 使得数列从某项开始都满足:U(n+k)=a1*U(n+k-1)+a2*U(n+k-2)+...+akUn (式A) 例如数列 1,1,2,3,5...可以发现:当K=2,a1=1,a2=1时,从第3项起(N>=1)满足: U(n+2)=U(n+1) + Un
试对数列1^3 ,2^3 ,3^3 ,...,N^3,...,求K和a1,a2,...ak,使得式A成立.
实质是考数学。
8.给出一棵二叉树的中序遍历:DBGEACHFI与后序遍历:DGEBHIFCA,画出此二叉树
9.给出二叉树的前序遍历与后序遍历,能确定一棵二叉树吗,举例说明.
10.下面是一个利用完全二叉树特性,用顺序表来存储的一个二叉树,结点数据为字符型(结 点层次从小到大,同一层从左到右顺序存储,#表示空结点,@表示存储数据结束)
结点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
数据 A B C # # D E # # # # # G F @
画出对应的二叉树:
考查了数据结构中的二叉树
^^^^^^^^ ^^^^^^
10.用邻接矩阵表示有向图(图略)
考查了数据结构中的图的表示
^^^^^^^^ ^^
11 根据Noachns定理,任何一个正整数n的立方一定可以表示成n个连续的奇数的和。
例如:
13=1
23=3+5
33=7+9+11
43=13+15+17+19
在这里,若将每一个式中的最小奇数称为X,那么当给出n之后,请写出X与n之间的关系表达式:___
其实是考代数
12 某班有50名学生,每位学生发一张调查卡,上写a,b,c三本书的书名,将读过的书打“*”,结果统计数字如下:
只读a者8人;只读b者4人;只读c者3人;全部读过的有2人;读过a,b两本书的有4人;读过a,c两本书的有2人;读过b,c两本书的有3人。
(1)读过a的人数是( )。
(2)一本书也没读过的人数是( )。
3)写运行结果
几乎是送分题,而且占的分数奇多,但得分率却不见得高。大家一定不要错过这个得分点啊! 一般做这类题目的核心是找程序目的,即这个程序想干什么。迄今为止考过的题目还没有“乱写”的,总有一点“写作目的”的。抓住了它,不仅得出答案变得很容易了,而且对自己的结果也会比较有信心。写程序运行结果大纲规定是必考的。试卷中给出的程序并不复杂,语句的含义容易明白,因此悟性好的选手总是很快就能体会到程序的设计思路并得出正确的答案,而机械模仿计算机硬算出结果的同学往往做的慢的多,而且容易失误。
1.(99年分区联赛)
Program excpl;
var
x,y,y1,jk,j1,g,e:Integer;
a:array[1..20] of 0..9;
begin x:=3465; y:=264; jk:=20;
for j1:=1 to 20 do a[j1]:=0;
while y<>0 do
begin
y1:=y mod 10;
y:=y div 10;
while y1<>0 do
begin
g:=x;
for e:=Jk downto 1 do
begin
g:=g+a[e];
a[e]:=g mod 10;
g:=g div 10
end;
y1:=y1-1
end;
jk:=jk-1
end;
j1:=1;
while a[j1]=0 do j1:=j1+1;
for Jk:=j1 to 20 do write(a[jk]:4);
writeln
end.
程序不长,但是有一定的难度。高手最多半分钟就看懂了程序的意思,但初学者往往算了很久得出了结果却是错的。下面我们还是先以一个初学者的身份分析一下这个程序。记住,不要一开始就模拟电脑来一个个语句“执行”
分析程序一般从以下几点入手:
1.变量
首先是变量的名字。可惜分区联赛题目中的变量不是I就是J,很讨厌。I和J一般作为循环计数器,没有什么意思,因此不要管它了。然后要看变量在程序的哪里出现过,着重看它与其他变量的相互引用关系,猜测它的作用。
例如上题。 x:只在g:=x中出现,暂时不要管它,因为它很可能只是一个初始数据。 y:有三处:
1) while y<>0 do
2) y1:=y mod 10;
3) y:=y div 10;
很明显,y每次少了最后一位数字,把这位数字给了y1。有经验的选手应该体会到了什么,不过我们继续。
现在我们知道了:y对程序的作用是:每次提供最后一位给y1,即y1每次的值依次是:4,6,2 y1:
1)while y1<>0 do
2)y1=y1-1
很明显就是一个循环嘛!循环y1次!写得那么肉麻...
jk:
1)for e:=jk downto 1 do
2)jk:=jk-1
jk作为循环初始值,居然一次比一次少...其原因有待进一步分析。
j1:
1)for j1:=1 to 20 do a[j1]:=0;
2)j1:=1;
3)while a[j1]=0 do j1:=j1+1;
4)for Jk:=j1 to 20 do write(a[jk]:4);
显然,j1和其它变量没有什么联系。1)是初始化,2)3)4)是输出数组a
g:
出现的位置是几层循环之内了,应该很重要!一会儿再分析!
e:作为循环变量,没有什么意思。
通过变量分析,我们知道了:
x,y是数据,y每次提供最后一位给y1,循环y1次。j1和g的作用有待分析。
2.程序结构
我们把程序分成几块。
1)
x:=3465; y:=264; jk:=20;
for j1:=1 to 20 do a[j1]:=0;
初始化。不要管它。
2)while y<>0 do
begin
y1:=y mod 10;
y:=y div 10;
while y1<>0 do
begin
<< g:=x;
for e:=Jk downto 1 do
begin
g:=g+a[e];
a[e]:=g mod 10;
g:=g div 10
end;
>>
y1:=y1-1
end;
jk:=jk-1
end;
3)
j1:=1;
while a[j1]=0 do j1:=j1+1;
for Jk:=j1 to 20 do write(a[jk]:4);
writeln
输出结果,也不要管它。
块2最重要。
它的思想是:
每次取Y的最第位y1,执行<<>>y1次,每次把jk减一。
现在最重要的是<<>>中的在干什么。
^^^^^^
注意到最后输出的a[],要留意a[]的变化!
a[e]总是取个位(g mod 10),g每次少一位,和a[e-1](别忘了e在循环!)相加...
难道是...高精度加法???
RIGHT。
它执行了y1次,y1每次都是y的个位... 程序就是在做x*y
所以答案就是 3465*264=914760
再看它的输出格式,输出的应该是:___9___1___4___7___6___0
其实有经验的话,看到g这个变量名和g:=g+a[e]; a[e]:=g mod 10;这几个标志句子。就可以一下子知道程序的用意了。
只有6行,你可以模拟电脑“执行”几个语句在找规律。
方法是:把循环“展开”,再写一个变量值表
即: 语句 执行后变量情况:
g:=x; g:=g+a[e]; g=x+a[e];
a[e]:=g mod 10; a[e]:=x+a[e]的个位
g:=g div 10; g=(x+a[e])的前几位
g:=g+a[e-1]; g=(x+a[e])的前几位+a[e-1];
a[e-1]:=g mod 10; a[e-1]=a[e-1]+(x+a[e])的进位
....
4)完善程序
这部分题目得分率似乎不高。没关系,尽量做吧。把一些简单的填好就行了。
建议大家把以前的初赛题目都做做。
常常让大家填的是:
1)初始化(i:=0; j:=0; for i:=1 to n do a[i]:=0之类的)
2)一些明显的动作:
a.结果没有储存在需要的地方。
b.累加器没有做加法
c.输出
3)关键动作。在算法描述中出现的比较关键的步骤。例如交换排序程序的“交换”操作等很明显需要完成的操作。
分析方法和写运行结果类似,注意分析变量和程序结构,理解变量和模块的作用是解题的关键。
noip初赛题解
参考技术A noip全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces,简称NOIP)自1995年至今已举办21次。每年由中国计算机学会统一组织。 NOIP在同一时间、不同地点以各省市为单位由特派员组织。全国统一大纲、统一试卷。初、高中或其他中等专业学校的学生可报名参加联赛。联赛分初赛和复赛两个阶段。初赛考察通用和实用的计算机科学知识,以笔试为主。复赛为程序设计,须在计算机上调试完成。参加初赛者须达到一定分数线后才有资格参加复赛。联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。
根据教育部现行《普通高校招收保送生办法》中关于保送生选拔条件的规定,获得全国青少年信息学奥林匹克联赛(NOIP)一等奖的应届高中毕业生,均具有保送进入高校就读的资格。部分地区一等奖获奖选手还享有高考加分优惠,具体情况视省招办政策而定。获奖选手可申请参加高校自主招生和保送生考试,经高校测试通过,可享受高考降分优惠或直接保送录取。
NOIP中成绩优秀的非高三选手,可以作为省代表队成员参加全国决赛(NOI)及夏令营比赛(部分省市代表队人员须经过选拔赛决出)。NOIP获奖选手同样具有保送资格,并且成绩优秀的选手能够当场获得高校点招,免试进入名牌大学。夏令营作为全国决赛的扩大赛,本身不具有保送资格,但如果选手之前已获得NOIP一等奖,则同样可以参与现场保送。2013届及以前获得提高组复赛一等奖的高中毕业生可免高考,而通过大学的保送生考试直接被录取。
试题形式
每次联赛的试题分四组:初中组初试赛题;初中组复试赛题;高中组初试赛题;高中组复试赛题。其中,初中组初试赛题和高中组初试赛题类型相同,初中组复试赛题和高中组复试赛题类型相同,但初中组和高中组的题目不完全相同,高中组难度略高;以体现年龄特点和层次要求。
* 初试:初试全部为笔试,满分100分。试题由四部分组成:
1、选择题:共20题,每题1.5分,共30分。每题有4个备选答案。试题内容包括计算机基本组成与原理、计算机基本操作、信息科技与人类社会发展的关系等等。(普及组为20道单选题,提高组为10道单选题和10道不定项选择题,不定项选择题与答案完全一致才得分,多选或少选均不得分)
2、问题求解题:共2题,每题5分,共10分。试题给出一个叙述较为简单的问题,要求学生对问题进行分析,找到一个合适的算法,并推算出问题的解。答案以字符串方式给出,考生给出的答案与标准答案的字符串相同,则得分;否则不得分。
3、程序阅读理解题:共4题,每题8分,共32分。题目给出一段程序(没有关于程序功能的说明),有时也会给出程序的输入,要求考生通过阅读理解该段程序给出程序的输出。输出以字符串的形式给出,如果与标准答案一致,则得分;否则不得分。
4、程序完善题:共2题,第一题10分,共4空,每空2.5分;第二题18分,共6空,每空3分。两题共28分。题目给出一段关于程序功能的文字说明,然后给出一段程序代码,在代码中略去了若干个语句并在这些位置给出空格,要求考生根据程序的功能说明和代码的上下文,填出被略去的语句。填对的,则得分;否则不得分。
(2009年普及组试题为第一题5空,每空3分,第二题前三空每空3分,后两空每空2分)
2010:3道问题求解题:每题5分;程序阅读理解题:每题7分;程序完善题:第1空,2分;其余2.5分。
2012:程序完善题:第一第二空2分,其余3分。
*复试:复试的题型和形式向全国信息学奥赛(NOI)靠拢,全部为上机编程题,但难度略低。复试为决出竞赛成绩的最后一个环节。题目难度有易有难,既考虑普及面,又考虑选拔的梯度要求。每一道试题包括:题目、问题描述、样例说明(输入、输出及必要的说明)、数据范围(数据限制条件)。测试时,测试程序为每道题提供了10~20组测试数据,考生程序每答对一组得5~10分;累计分即为该道题的得分。其中普及组题目包括4道题,每题100分,共计400分;从2011年开始,提高组由一试改为两试,分由两天进行。每天竞赛试题由原来的4题改为3题。所有进入复赛的提高组选手均参加一试和二试,选手最终成绩由一试与二试成绩算术相加而得,即满分为600分。
以上是关于参加noip需要哪些知识的主要内容,如果未能解决你的问题,请参考以下文章
noip需要准备哪些方面的基础知识。复赛需要做哪些类型的题目(提高组)?
noip需要准备哪些方面的基础知识.复赛需要做哪些类型的题目(提高组)?