1999年至历年信息学奥赛提高组初赛试题.docx

上传人:b****7 文档编号:8859170 上传时间:2023-02-02 格式:DOCX 页数:52 大小:31.96KB
下载 相关 举报
1999年至历年信息学奥赛提高组初赛试题.docx_第1页
第1页 / 共52页
1999年至历年信息学奥赛提高组初赛试题.docx_第2页
第2页 / 共52页
1999年至历年信息学奥赛提高组初赛试题.docx_第3页
第3页 / 共52页
1999年至历年信息学奥赛提高组初赛试题.docx_第4页
第4页 / 共52页
1999年至历年信息学奥赛提高组初赛试题.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

1999年至历年信息学奥赛提高组初赛试题.docx

《1999年至历年信息学奥赛提高组初赛试题.docx》由会员分享,可在线阅读,更多相关《1999年至历年信息学奥赛提高组初赛试题.docx(52页珍藏版)》请在冰豆网上搜索。

1999年至历年信息学奥赛提高组初赛试题.docx

1999年至历年信息学奥赛提高组初赛试题

1999年至历年信息学奥赛提高组初赛试题

福建省莆田第一中学

信息学奥赛兴趣小组

整理:

林梓雨

第十七届(2021)全国青少年信息学奥林匹克联赛初赛试题

提高组

Pascal语言

两小时完成)

●●

全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效

●●

一、单项选择题(共20题,每题1.5分。

共计30分。

每题有且仅有一个正确选项。

1.在二进制下,1100011

+()=

1110000。

A.1B.1C.0

D.1111

2.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。

A.66

B.5AC.50

D.视具体的计算机而定

3.右图是一棵二叉树,它的先序遍历是()。

A.ABDEFC

B.DBEFACC.DFEBCA

D.ABCDEF

4.寄存器是()的重要组成部分。

A.硬盘

B.高速缓存

C.内存D.中央处理器(CPU)

5.广度优先搜索时,需要用到的数据结构是()。

A.链表

B.队列C.栈D.散列表

6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指()。

A.程序运行时理论上所占的内存空间

B.程序运行时理论上所占的数组空间

C.程序运行时理论上所占的硬盘空间

D.程序源文理论上所占的硬盘空间

7.应用快速排序的分治思想,可以实现一个求第K大数的程序。

假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。

A.O(n2)B.O(n

log

n)C.O(n)D.O

(1)

8.为解决Web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及、XML、CSS等,并建议开发者遵循。

A.微软

B.美国计算机协会(ACM)

C.联台国教科文组织D.万维网联盟(W3C)

9.体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。

每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。

这种站队的方法类似于()算法。

A.快速排序B.插入排序C.冒泡排序D.归并排序

10.1956年()授予肖克利(William

Shockley)、巴丁(John

Bardeen)和布拉顿(Walter

Brattain),以表彰他们对半导体的研究和晶体管效应的发现。

A.诺贝尔物理学奖

B.约翰?

冯?

诺依曼奖

C.图灵奖

D.高德纳奖(Donald

E.Knuth

Prize)

二、不定项选择题(共10题,每题1.5分,共计15分。

每题有一个或多个正确选项。

多选或少选均不得分。

1.如果根结点的深度记为1,则一棵恰有2021个叶子结点的二叉树的深度可能是()。

A.10B.11C.12

D.2021

2.在布尔逻辑中,逻辑“或”的性质有()。

A.交换律:

P

V

Q

=

Q

V

P

B.结台律:

P

V

Q

V

R

=

P

V

Q

V

R

C.幂等律:

P

V

P

=

P

D.有界律:

P

V

1

=

1

(1表示逻辑真)

3.一个正整数在十六进制下有100位,则它在二进制下可能有()位。

A.399B.400C.401

D.404

4.汇编语言()。

A.是一种与具体硬无关的程序设计语言

B.在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试

C.可以直接访问寄存器、内存单元、I/O端口

D.随着高级语言的诞生,如今已完全被淘汰,不再使用

5.现有一段文言文,要通过二进制哈夫曼编码进行压缩。

简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700、600、300、400。

那么,“也”字的编码长度可能是()。

A.1B.2C.3

D.4

6.生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。

目前,指纹识别、虹膜识别、人脸识别等技术己广泛应用于政府、银行、安全防卫等领域。

以下属于生物特征识别技术及其应用的是()。

A.指静脉验证B.步态验证C.ATM机密码验证D.声音验证

7.对于序列“7、5、1、9、3、6、8、4”,在不改变顺序的情况下,去掉()会使逆序对的个数减少3。

A.7B.5C.3

D.6

8.计算机中的数值信息分为整数和实数(浮点数)。

实数之所以能表示很大或者很小的数,是由于使用了()。

A.阶码B.补码C.反码D.较长的尾数

9.对右图使用Dijkstra算法计算S点到其余各点的最短路径

长度时,到B点的距离d[B]初始时赋为8,在算法的执行过程

中还会出现的值有()。

A.3B.7C.6

D.5

10.为计算机网络中进行数据交换而建立的规则、标准或约定的集合成为网络协议。

下列英文缩写中,()是网络协议。

A.B.TCP/IPC.FTP

D.

三、问题求解(共2题,每题5分,共计10分)

1.平面图是可以画在在平面上,且它的边仅在顶点上才能相交的简单

无向图。

4个顶点的平面图至多有6条边,如右图所示。

那么,5个顶

点的平面图至多有______条边。

2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。

举例说明,对于字符串”BcA”,可以将A移到B之前,变成字符串”ABC”。

如果要将字符串”DACHEBGIF”变成”ABCDEFGHI”,最少需要________次操作。

四、阅读程序写结果(共4题,每题8分,共计32分)

1.

Const

SIZE

=

100;

var

n,i,sum,x

:

integer;

a

:

array[1SIZE]

of

integer;

begin

readln(n);

fillchar(a,sizeof(a),0);

for

i:

=

1

to

n

do

begin

read(x);

inc(a[x]);

end;

i

:

=

0;

sum

:

=

0;

while

sum

ans

then

ans

:

=

len;

for

i

:

=

1

to

n

do

if

(not

visited[i])

and

(e[x,i]

-1)

then

dfs(i,len

+

e[x,i]);

visited[x]

:

=

false;

end;

begin

readln(n,m);

for

i

:

=

1

to

n

do

for

j

:

=

1

to

n

do

e[i][j]

:

=

-1;

for

i

:

=

1

to

m

do

begin

readln(a,b,c);

e[a][b]

:

=

c;

e[b][a]

:

=

c;

end;

for

i

:

=

1

to

n

do

visited[i]

:

=

false;

ans

:

=

0;

for

i

:

=

1

to

n

do

dfs(i,0);

writeln(ans);

end.

输入:

4

6

1

2

10

2

3

20

3

4

30

4

1

40

1

3

50

2

4

60

输出:

__________

4.

const

SIZE

=

10000;

LENGTH

=

10;

var

sum

:

longint;

n,m,i,j

:

integer;

a

:

array[1SIZE,1LENGTH]

of

integer;

function

h(u,v

:

integer)

:

integer;

var

ans,i

:

integer;

begin

ans

:

=

0;

for

i

:

=

1

to

n

do

if

a[u][i]

a[v][i]

then

inc(ans);

h

:

=

ans;

end;

begin

readln(n);

filichar(a,sizeof(a),0);

m

:

=

1;

repeat

i

:

=

1;

while

(i

n

then

break;

inc(m);

a[m][i]

:

=1;

for

j

:

=

i

+

1

to

n

do

a[m][j]

:

=

a[m

-

1][j];

until

false;

sum

:

=0;

for

i

:

=

1

to

m

do

for

j

:

=

1

to

m

do

sum

:

=

sum

+

h(i,j);

writeln(sum);

end.

输入:

7

输出:

____________

五、完善程序(第1题,每空2分,第2题,每空3分,共计28分)

1.

(大整数开方)输入一个正整数n(1≤n

0

then

ans.len

:

=

a.1en

+

b.1en

else

ans.len

:

=a.1en

+

b.1en

1;

end;

times

:

=

ans;

end;

function

add(a,b

:

hugeint)

:

hugeint;

var

i

:

integer;

ans

:

hugeint;

begin

fillchar(ans.num,sizeof(ans.num),0);

if

a.1en

>

b.1en

then

ans.len

:

=

a.1en

else

ans.len

:

=

b.len;

for

i

:

=

1

to

ans.1en

do

begin

ans.num[i]

:

=___③___;

ans.num[i

+

1]

:

=

ans.num[i

+

1]

+

ans.num[i]

div

10;

ans.num[i]

:

=

ans.num[i]

mod

10;

end;

if

ans.num[ans.1en

+

1]

>

0

then

inc(ans.len);

add:

=ans;

end;

function

average(a,b

:

hugeint)

:

hugeint;

var

i

:

integer;

ans

:

hugeint;

begin

ans

:

=

add(a,b);

for

i

:

=

ans.1en

downto

2

do

begin

ans.num[i

-

1]

:

=

ans.num[i

-

1]

+

(___④___)

10;

ans.num[i]

:

=

ans.num[i]

div

2;

end;

ans.num[i]

:

=

ans.num[i]

div

2;

if

ans.num[ans.len]

=

0

then

dec(ans.len);

average

:

=

ans;

end;

function

plustwo(a

:

hugeint)

:

hugeint;

var

i

:

integer;

ans

:

hugeint;

begin

ans

:

=

a;

ans.num[1]

:

=

ans.num[1]

+

2;

i

:

=

1;

while(i

=

10)

do

begin

ans.num[i

+

1]

:

=

ans.num[i

+

1]

+

ans.num[i]

div

10;

ans.num[i]

:

=

ans.num[i]

mod

10;

inc(i);

end;

if

ans.num[ans.len

+

1]

>

0

then___⑤___;

plustwo

:

=

ans;

end;

function

over(a,b

:

hugeint)

:

boolean;

var

i

:

integer;

begin

if(___⑥___)then

begin

over

:

=

false;

exit;

end;

if

a.1en

>

b.1en

then

begin

over

:

=

true;

exit;

end;

for

i

:

=

a.len

downto

1

do

begin

if

a.num[i]

b.num[i]

then

begin

over

:

=

true;

exit;

end;

end;

over

:

=

false;

end;’

begin

readln(s);

fillchar(target.num,sizeof(target.num),0);

target.1en

:

=

1ength(s);

for

i

:

=

1

to

target.1en

do

target.num[i]

:

=

ord(s[target.1en

i

+

1])

-

___⑦___;

filichar(left.num,sizeof(1eft.num),0);

left.1en

:

=

1;

left.num[i]

:

=

1;

right

:

=

target;

repeat

middle

:

=

average(1eft,right);

if

over(___⑧___)

then

right

:

=

middle

else

1eft

:

=

middle;

until

over(plustwo(1eft),right);

for

i

:

=

left.1en

downto

1

do

write(1eft.num[i]);

writeln;

end.

2.

(笛卡尔树)对于一个给定的两两不等的正整数序列,笛卡尔树是这样的一棵二叉树:

首先,它是一个最小堆,即除了根结点外,每个结点的权值都大于父节点的权值;其次,它的中序遍历恰好就是给定的序列。

例如,对于序列7、2、12、1、10、5、15、3,下图就是一棵对应的笛卡尔树。

现输入序列的规模n(1≤n

maxDeep

then

begin

maxDeep

:

=

deep;

num

:

=

1;

end

else

if

deep

=

maxDeep

then

___①___;

min

:

=

INFINITY;

for

i

:

=

1eft

to

right

do

if

min

>

a[i]

then

begin

min

:

=

a[i];

___②___;

end;

if

left

欢迎访问NOI网站

B.欢迎访问NOI网站

C.h

t

t

p

:

/

/

w

w

w

.

n

o

i

.

c

n

D.欢迎访问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,1)的直线

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

9.双向链表中有两个指针域llink和rlink,分别指向该结点的前驱及后继。

设p指向链表中的一个结点,他的左右结点均为非空。

现要求删除结点p,则下列语句序列中正确的是(

)。

A.p->rlink->llink=p->rlink;

p->llink->rlink=p->llink;

delete

p;

B.p->llink->rlink=p->rlink;

p->rlink->llink

=

p->llink;

delete

p;

C.p->rlink->llink

=

p->llink;

p->rlink->llink

->rlink

=

p->rlink;

delete

p;

D.p->llink->rlink

=

p->rlink;

p->llink->rlink->link

=

p->llink;

delete

p;

10.

今年(2021年)发生的事有()。

A.惠普实验室研究员Vinay

Deolalikar

自称证明了P≠NP

B.英特尔公司收购计算机安全软公司迈克菲(McAfee)

C.苹果公司发布iPhone

4手机D.微软公司发布Windows

7

操作系统

三、问题求解

1.LZW编码是一种自适应词典编码。

在编码的过程中,开始时只有一部基础构造元素的编码词典,如果在编码的过程中遇到一个新的词条,则该词条及一个新的编码会被追加到词典中,并用于后继信息的编码。

举例说明,考虑一个待编码的信息串:

“xyx

yy

yy

xyx”。

初始词典只有3个条目,第一个为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。

我们可以看到,信息被压缩了。

压缩好的信息传递到接受方,接收方也只要根据基础词典就可以完成对该序列的完全恢复。

解码过程是编码过程的逆操作。

现在已知初始词典的3个条目如上述,接收端收到的编码信息为2-2-1-2-3-1-1-3-4-3-1-2-1-3-5-3-6,则解码后的信息串是”____________”。

2.无向图G有7个顶点,若不存在由奇数条边构成的简单回路,则它至多有__________条边。

3.记T为一队列,初始时为空,现有n个总和不超过32的正整数依次入列。

如果无论这些数具体为何值,都能找到一种出队的方式,使得存在某个时刻队列T中的数之和恰好为9,那么n的最小值是___________。

四、阅读程序写结果

1.

const

size

=

10;

var

i,j,cnt,n,m

:

integer;

data

:

array[1size]

of

integer;

begin

readln(n,m);

for

i

:

=

1

to

n

do

read(data[i]);

for

i

:

=

1

to

n

do

begin

cnt

:

=

0;

for

j

:

=

1

to

n

do

if

(data[i]

right

then

begin

if

successful

then

begin

for

i

:

=

1

to

n

do

writeln(r[i],);

found

:

=

true;

end;

exit;

end;

for

i:

=

left

to

right

do

begin

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

perm(left

+

1,right);

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

end;

end;

begin

readln(n,m);

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

for

i

:

=

1

to

m

do

begin

readln(x,y);

map[x][y]

:

=

true;

map[y][x]

:

=

true;

end;

for

i

:

=

1

to

n

do

r[i]

:

=

i;

found

:

=

false;

perm(1,n);

if

not

found

then

writeln(

No

soloution

);

end.

输入:

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

输出:

__________

五、完善程序

1.(过河问题)

在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2

b

then

max

:

=

a

else

max

:

=

b;

end;

function

go(stage

:

boolean)

:

integer;

var

i,j,num,tmp,ans

:

integer;

begin

if

(stage

=

RIGHT_TO_LEFT)

then

begin

num

:

=

0;

ans

:

=0;

for

i

:

=

1

to

n

do

if

pos[i]

=

Rignt

then

begin

inc(num);

if

time[i]

>

ans

then

ans

:

=

time[i];

end;

if

__________

then

begin

go

:

=

ans;

exit;

end;

ans

:

=

INFINITY;

for

i

:

=

1

to

n

1

do

if

pos[i]

=

RIGHT

then

for

j

:

=

i+1

to

n

do

if

pos[j]

=

RIGHT

then

begin

pos[i]

:

=

LEFT;

pos[j]

:

=

LEFT;

tmp

:

=

max(time[i],time[j])

+

_______;

if

tmp

=1,它的叶结点数目为:

A)

nk

+

1

B)

nk-1

C)

(k+1)n-1

D.

(k-1)n+1

6.

表达式a*(b+c)-d的后缀表达式是:

A)

abcd*+-

B)

abc+*d-

C)

abc*+d-

D)

-+*abcd

7、最优前缀编码,也称Huffman编码。

这种编码组合的特点是对于较频繁使用的元素给与较短的唯一编码,以提高通讯的效率。

下面编码组合哪一组不是合法的前缀编码。

A)(00,01,10,11)

B)(0,1,00,11)

C)(0,10,110,111)

D)(1,01,000,001)

8、快速排序平均情况和最坏情况下的算法时间复杂度分别为:

A)

平均情况

O(nlog2n),最坏情况O(n2)

B)

平均情况

O(n),

最坏情况O(n2)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1