第16届全国信息学奥林匹克竞赛省预赛试题解答。

答案如下,

NOIP2010(帕斯卡改进小组)

一、多项选择题

1.10十进制数相当于16十进制数A1.2是()a . 101.2b . 111.4c . 65438。

2.一个字节由()二进制组成。A.8B.16 C.32 D .以上都有可能。

3.下列逻辑表达式的值始终为真()。

A.p∨(┓p∧q)∨(┓p∧┓q)b.q∨(┓p∧q)∨(p∧┓q)

C.p∨q∨(p∧┓q)∨(┓p∧q)d.p∨┓q∨(p∧┓q)∨(┓p∧┓q)

4.4下可执行文件的默认扩展名。Linux是()。A.exeb.com.dll.d .以上都不是。

5.如果方程7*7=41在某个系统中成立,那么方程12*12=()在这个系统中也成立。

A.100 b。144 c。164d。196

6.提出计算机“存储程序”工作原理的是()。

A.克劳德?香农. b .戈登。摩尔·查尔斯?巴比克·冯?诺伊曼

7.前缀表达式“+3 * 2+5 12”的值是()。答. 23B。25 C. 37D。65

8.主存的访问速度比中央处理器(CPU)的工作速度慢很多,影响了后者的效率。根据局部性原理,CPU访问的存储单元通常倾向于在一个连续的小区域内。因此,为了提高整个系统的执行效率,在CPU中引入了()。a .寄存器b .缓存c .闪存d .外部存储器

9.完全二叉树的顺序存储方案是指将完全二叉树的节点按照从上到下、从左到右的顺序结构存储在一个数组中。假设根节点存储在数组的位置1,节点K的父节点如果存在,应该存储在数组的位置()。A.2kb.2k+1 C.K./2,轮D. (k+1)/2。

10.下列比赛中历史最悠久的是()。不透明的。APIO

二、不定选择题

1.元素R1、R2、R3、R4和R5按照R1、R2、R3、R4和R5的顺序堆叠。如果第1个是R3,那么第5个可能是()。A.R1 B.R2 C.R4 D.R5

2.Pascal语言、C语言、C++语言都属于()。a .高级语言b .自然语言c .解释语言d .编译语言

3.就地排序是指辅助空间(除了存储要排序的元素)的大小与数据大小无关的一种排序算法。下列属于原位排序的有()。a .冒泡排序b .插入排序c .基数排序d .选择排序

4.在整数的补码表示法中,下列说法正确的是()。

A.只有负整数的最高编码位是1B..编码比特数确定后,可以表示的最小整数和最大整数的绝对值是相同的。

C.整数0只有一个唯一代码。d .用补码表示的两个数相加时,如果最高有效位出现进位,说明运算溢出。

5.如果二叉树的前序遍历序列是ABCDEFG,后序遍历序列是CBFEGDA,那么根节点的左子树中的节点数可能是()。A0 b . 2 c . 4d . 6

6.在下面的HTML语句中,能正确生成NOI官方网站超链接的是()。

A.& lta URL = " h t t p://w w w w n o I . c n " >欢迎来到NOI网站

B.& lta href = " h t t p://w w w n o I . c n " >欢迎来到NOI网站

C.& lta & gth t t p://w w w w n o I . c n & lt;/a & gt;

D.& lt一个名称" h t t p://w w w n o I c n " >欢迎来到NOI网站

7.关于拓扑排序,下列说法正确的是()。

A.所有连通有向图都可以实现拓扑排序。

b对于同一个图,拓扑序的结构是唯一的。

C.在拓扑排序中,入度为0的节点总是排在入度大于0的节点之前。

D.拓扑排序结果序列中的第一个节点必须是入度大于0的点。

8.平面的法线是指垂直于该平面的直线。平面通过点(1,1,1),(0,3,0),(2,0,0)的法线是()。

A.通过点(1,1,1)和(2,3,3)的直线b .通过点(1,1,1)和(3,2,65438)

C.过点(0,3,0)和(-3,1,1)的直线d .过点(2,0,0)和(5,2,1)的直线

9.链表中有两个指针字段llink和rlink,分别指向节点的前任和继任者。设p指向链表中的一个节点,其左右节点非空。现在要求删除节点p,那么下列语句序列中正确的是()。

a . p-& gt;rlink-& gt;llink = p-& gt;rlink

p->;llink-& gt;rlink = p-& gt;llink删除p;

b . p-& gt;llink-& gt;rlink = p-& gt;rlink

p->;rlink-& gt;llink = p-& gt;llink删除p;

C.p->rlink-& gt;llink = p-& gt;llink

p->;rlink-& gt;llink-& gt;rlink = p-& gt;rlink删除p;

D.p->llink-& gt;rlink = p-& gt;rlink

p->;llink-& gt;rlink-& gt;link = p-& gt;llink删除p;

10.今年(2010)发生的事件有()。

A.惠普实验室的研究员Vinay Deolalikar声称已经证明了P≠NP。

B.英特尔收购了电脑安全软件公司McAfee。

C.苹果发布iPhone 4手机d .微软发布Windows 7操作系统。

第三,解决问题

1.LZW编码是一种自适应字典编码。在编码的过程中,最开始只有一个基本结构元素的编码字典。如果在编码过程中遇到新条目,该条目和新代码将被添加到字典中,并用于编码后续信息。

例如,考虑一个要编码的信息字符串:“xyx yy yy xyx”。初始字典只有三个词条,第一个是X,代码是1;第二个是y,代码是2;第三个是空格,编码为3;因此,字符串“xyx”的代码是1-2-1(其中-是代码分隔符),它后面的一个空格是1-2-1-3。但是因为有一个空格,我们知道前面的“xyx”是一个单词,又因为这个单词不在字典里,我们可以自适应的把这个词条加入字典,编码为4,然后按照新的字典对后续的信息进行编码,以此类推。于是,最终得到代码:1-2-1-3-2-2-3-5-3-4。

我们可以看到信息被压缩了。压缩后的信息传输给接收方,接收方根据基本字典就可以完成序列的完全恢复。解码过程是编码过程的反向操作。现在已知初始字典中的三个词条如上所述,接收方接收到的编码信息为2-2-1-2-3-1-3-4-3-1-2-1-3-5-3-6。

2.无向图G有七个顶点。如果没有由奇边组成的简单环,它最多有_ _ _ _ _ _ _ _ _条边。

3.记住T是一个队列,开头是空的,现有的n个总数不超过32的正整数依次放入队列。如果不管这些数是什么,我们都能找到一种出队列的方法使得某一时刻队列T中的数之和正好是9,那么n的最小值就是_ _ _ _ _ _ _ _ _。

第四,阅读程序写出结果

1.

常数

size = 10;

定义变量

I,j,cnt,n,m:整数;

数据:数组[1..size]的整数;

开始

readln(n,m);

对于i := 1到n do

read(data[I]);

对于i := 1到n do

开始

CNT:= 0;

对于j := 1到n do

if(data[I]& lt;data[j])或((data[j] = data[i])和(j & lt我))

然后是Inc(CNT);

如果cnt = m

然后writeln(data[I]);

结束;

结束。

投入

5 2

96 -8 0 16 87

输出:_ _ _ _ _ _ _ _ _

2.

常数

size = 100;

定义变量

na,nb,I,j,k:整数;

a,b:数组[1..size]的整数;

开始

readln(na);

对于i := 1到na do

读(a[I]);

readln(nb);

for i := 1 to nb do

读作(b[I]);

I:= 1;

j:= 1;

while(我& lt= na)和(j & lt= nb) do

开始

如果a[I]& lt;= b[j]那么

开始

写(a[i],' ');

inc(一);

结束

否则开始

写(b[j],' ');

Inc(j);

结束;

结束;

如果我& lt=那na呢

对于k := i到na do

写(a[k],' ');

如果j & lt那么= nb

对于k := j到nb do

写(b[k],' ');

结束。

投入

1 3 5 7 9

2 6 10 14

输出:_ _ _ _ _ _ _ _ _

3.

常数

num = 5;

定义变量

n:整数;

函数r(n:整数) :整数;

定义变量

I:整数;

开始

如果n & lt= num then

开始

r:= n;

退出;

结束;

对于i :=1到num do

如果r(n-I)& lt;那么0

开始

r:= I;

退出;

结束;

r:=-1;

结束;

开始

readln(n);

writeln(r(n));

结束。

输入16

输出:_ _ _ _ _ _ _ _ _

4.

常数

size = 100;

定义变量

n,m,x,y,I:整数;

r: array[1..size]的整数;

映射:数组[1..尺寸,1..大小]的布尔值;

找到:布尔型;

函数成功:布尔型;

定义变量

I:整数;

开始

对于i :=1到n do

如果不是映射[r[i]][r[i mod n + 1]]

那么开始吧

成功:=假;

退出;

结束;

成功:=真;

结束;

过程交换(var a,b:整数);

定义变量

t:整数;

开始

t:= a;

a:= b;

b:= t;

结束;

procedure perm(左、右:整数);

定义变量

I:整数;

开始

如果找到

然后退出;

如果离开& gt正确

那么开始吧

如果成功

那么开始吧

对于i := 1到n do

writeln(r[i],' ');

发现:=真;

结束;

退出;

结束;

对于i:=从左到右做

开始

swap(r[left],r[I]);

烫发(左+ 1,右);

swap(r[left],r[I]);

结束;

结束;

开始

readln(n,m);

fillchar(map,sizeof(map),false);

对于i := 1到m do

开始

readln(x,y);

map[x][y]:= true;

map[y][x]:= true;

结束;

对于i := 1到n do

r[I]:= I;

发现:=假;

perm(1,n);

如果找不到

然后writeln('无解决');

结束。

输入:

9 12

1 2

2 3

3 4

4 5

5 6

6 1

1 7

2 7

3 8

4 8

5 9

6 9

输出:_ _ _ _ _ _ _ _ _

动词 (verb的缩写)改进程序

1.(过河)一个月的一个漆黑的夜晚,一群人在河的右岸,试图通过唯一的木桥走到河的左岸。在黑暗中,过桥时,他们不得不用灯照明。不幸的是,他们只有一盏灯。另外,木桥最多能承受两个人同时通过,否则就会倒塌。每个人都独自走过独木桥。不同的人可能需要不同的时间。两个人一起过独木桥,因为只有一盏灯,所以需要的时间就是慢一点的人独自过桥的时间。现在输入n (2

比如有三个人,A,B,C,他们单独过桥的时间是1.24,那么总的最少需要时间是7。具体方法是:A和B一起过桥到河的左岸,A独自返回河的右岸带回灯光,然后A和C一起过桥到河的左岸,总时间为2+65,438+0+4。

常数

SIZE = 100;

无穷大= 10000;

左=真;

右=假;

左向右=真;

RIGHT _ TO _ LEFT = false

定义变量

n,I:整数;

时间:数组[1..Size]的整数;

位置:数组[1..大小]的布尔值;

函数max(a,b :integer):整数;

开始

如果a & gtb那么

最大:= a

其他

max:= b;

结束;

函数go(stage : boolean):整数;

定义变量

I,j,num,tmp,ans:整数;

开始

if (stage =从右向左)

那么开始吧

num:= 0;

ans:= 0;

对于i := 1到n do

如果pos[i] = Rignt,则

开始

inc(数字);

如果时间[I]& gt;然后回答

ans:= time[I];

结束;

如果__________,那么

开始

go:= ans;

退出;

结束;

ans :=无穷大;

对于i := 1至n–1 do

如果pos[i] = RIGHT,那么

对于j := i+1到n do

如果pos[j] = RIGHT,那么

开始

pos[I]:= LEFT;

pos[j] :=左;

tmp := max(time[i],time[j])+_ _ _ _ _ _ _;

如果tmp & lt然后回答

ans:= tmp;

pos[i] :=右;

pos[j]:= RIGHT;

结束;

go:= ans;

结束

else if (stage =从左到右)

那么开始吧

ans :=无穷大;

对于i := 1到n do

如果_______那么

开始

pos[i] :=右;

tmp:= _ _ _ _ _ _ _ _;

如果tmp & lt然后回答

ans:= tmp;

_________;

结束;

go:= ans;

结束

else go:= 0;

结束;

开始

readln(n);

对于i := 1到n do

开始

read(time[I]);

pos[i] :=右;

结束;

writeln(go(RIGHT _ TO _ LEFT));

结束。

-

一、单项选择题(* * 10题,每题1.5分,* * 15分)

1 2 3 4 5 6 7 8 9 10

C A A D B D C B C B

二、不定选择题(* * 10题,每题1.5分,* * * 15分,多选或少选不计分)

1 2 3 4 5 6 7 8 9 10

ACD AD ABD AC B B D D BCD ABC

三、解题(***3题,每题5分,* * * 15分)

1 . yyxy xx yyxy xyx xx xyx 2.12 3.18

四、阅读程序写结果(***4题,每题7分,28分作***)

1.16 2.1 2 3 5 6 7 9 10 14 3.4 4.1 6 9 5 4 8 3 2 7

五、完善程序(1空2分,其余10空,每空2.5分,* * * 27分)

(注意:在下面的过程中可能有一些等价的填空方法。各省可以请自己的专家在电脑上审核,不一定要报科委审核。)

1.①数量& lt= 2(或数字

②走(从左到右)

③位置[i] =左(或左=位置[i])

④ time[i]+go(从右向左)(或go(从右向左)+time[i])

⑤位置[i] :=左侧

在这个问题中,LEFT可以替换为true,LEFT_TO_RIGHT可以替换为true,RIGHT_TO_LEFT可以替换为false。

2.① opt[k]

② home[r] := k

③ j := i+i(或j := 2 * i或j := i * 2)

④ swap(i,j)(或swap(j,I))

⑤值[i]+堆[1](或堆[1]+值[I])

⑥即时通讯