NOIP提高组初赛模拟试题.docx
《NOIP提高组初赛模拟试题.docx》由会员分享,可在线阅读,更多相关《NOIP提高组初赛模拟试题.docx(15页珍藏版)》请在冰豆网上搜索。
NOIP提高组初赛模拟试题
第二十三届全国青少年信息学奥林匹克联赛初赛
提高组PASCAL语言模拟试题
竞赛时间:
2017年10月14日14:
30~16:
30
选手注意:
●试题纸共有13页,答题纸共有2页,满分100分。
请在答题纸上作答,写
在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)
1.1956年()授予肖克利(WilliamShockley)、巴丁(JohnBardeen)和布拉顿(WalterBrattain),以表彰他们对半导体的研究和晶体管效应的发现。
A.诺贝尔物理学奖B.约翰·冯·诺依曼奖
C.图灵奖D.高德纳奖(DonaldE.KnuthPrize)
2.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S和字母键D的顺序来回按键,即CapsLock、A、S、D、S、A、CapsLock、A、S、D、S、A、CapsLock、A、S、D、S、A、……,屏幕上输出的第81个字符是字母()。
A.AB.SC.DD.A
3.二进制数00101100和01010101异或的结果是()。
A.00101000B.01111001C.01000100D.00111000
4.与二进制小数0.1相等的八进进制数是()。
A.0.8B.0.4C.0.2D.0.1
5.以比较作为基本运算,在N个数中找最小数的最少运算次数为()。
A.NB.N-1C.N2D.logN
6.表达式a*(b+c)-d的后缀表达形式为()。
A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd
7.
一棵二叉树如右图所示,若采用二叉树链表存储该二叉树(各个结点包括结点的数据、左孩子指针、右孩子指
针)。
如果没有左孩子或者右孩子,则对应的为空指针。
那么该链表中空指针的数目为()。
A.6B.7C.12D.14
8.G是一个非连通简单无向图,共有28条边,则该图至少有()个顶点。
A.10B.9C.8D.7
9.某计算机的CPU和内存之间的地址总线宽度是32位(bit),这台计算机最多可以使用()的内存。
A.2GBB.4GBC.8GBD.16GB
10.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。
如果用现实生活中的例子来比喻这些“层”,以下最恰当的是()。
A.中国公司的经理与波兰公司的经理交互商业文件
B.军队发布命令
C.国际会议中,每个人都与他国地位对等的人直接进行会谈
D.体育比赛中,每一级比赛的优胜者晋级上一级比赛
11.有7个一模一样的苹果,放到3个一样的盘子中,一共有()种放法。
A.7B.8C.21D.37
12.Lucia和她的朋友以及朋友的朋友都在某社交网站上注册了账号。
下图是他们之间的关系图,两个人之间有边相连代表这两个人是朋友,没有边相连代表
不是朋友。
这个社交网站的规则是:
如果某人A向他(她)的朋友B分享了某张照片,那么B就可以对该照片进行评论;如果B评论了该照片,那么他(她)的所有朋友都可以看见这个评论以及被评论的照片,但是不能对该照
片进行评论(除非A也向他(她)分享了该照片)。
现在Lucia已经上传了
一张照片,但是她不想让Jacob看见这张照片,那么她可以向以下朋友()分享该照片。
A.Dana,Michael,EveB.Dana,Eve,Monica
C.Michael,Eve,JacobD.Micheal,Peter,Monica
13.周末小明和爸爸妈妈三个人一起想动手做三道菜。
小明负责洗菜、爸爸负责切菜、妈妈负责炒菜。
假设做每道菜的顺序都是:
先洗菜10分钟,然后切菜10分钟,最后炒菜10分钟。
那么做一道菜需要30分钟。
注意:
两道不同的菜的相同步骤不可以同时进行。
例如第一道菜和第二道的菜不能同时洗,
也不能同时切。
那么做完三道菜的最短时间需要()分钟。
A.90B.60C.50D.40
14.假设某算法的计算时间表示为递推关系式
T(n)=2T(
)+
T
(1)=1
则算法的时间复杂度为()。
A.O(n)B.O(
)C.O(
logn)D.O(n2)
15.给定含有n个不同的数的数组L=。
如果L中存在xi(1xi+1>...>xn,则称L是单峰的,并称xi是L的“峰顶”。
现在已知L是单峰的,请把a-c三行代码补全到算法中使得算法正确找到L的峰顶。
a.Search(k+1,n)
b.Search(1,k-1)
c.returnL[k]
Search(1,n)
1.k←[n/2]
2.ifL[k]>L[k-1]andL[k]>L[k+1]
3.then__________
4.elseifL[k]>L[k-1]andL[k]5.then__________
6.else__________
正确的填空顺序是()。
A.c,a,bB.c,b,aC.a,b,cD.b,a,c
二、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,多选或少选均不得分)
1.以下属于无线通信技术的有()。
A.蓝牙B.WiFiC.GPRSD.以太网
2.可以将单个计算机接入到计算机网络中的网络接入通讯设备有()。
A.网卡B.光驱C.鼠标D.显卡
3.下列算法中运用分治思想的有()。
A.快速排序B.归并排序C.冒泡排序D.计数排序
4.下图表示一个果园灌溉系统,有A、B、C、D四个阀门,每个阀门可以打开或关上,所有管道粗细相同,以下设置阀门的方法中,可以让果树浇上水的
有水
有水
果树
有()。
A.B打开,其他都关上B.AB都打开,CD都关上
C.A打开,其他都关上D.D打开,其他都关上
5.参加NOI比赛,以下能带入考场的有()。
A.钢笔B.适量的衣服C.U盘D.铅笔
三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)
1.在1和2015之间(包括1和2015在内)不能被4、5、6三个数任意一个数整除的数有_________个。
2.结点数为5的不同形态的二叉树一共有_________种。
(结点数为2的二叉树一共有2种:
一种是根结点和左儿子,另一种是根结点和右儿子。
)
四、阅读程序写结果(共4题,每题8分,共计32分)
1.
Const
SIZE=100;
var
n,i,sum,x:
integer;
a:
array[1..SIZE]ofinteger;
begin
readln(n);
fillchar(a,sizeof(a),0);
fori:
=1tondo
begin
read(x);
inc(a[x]);
end;
i:
=0;
sum:
=0;
whilesum<(ndiv2+1)do
begin
inc(i);
sum:
=sum+a[i];
end;
writeln(i);
end.
输入:
11
45664332321
输出:
2.
var
n:
integer;
proceduref2(x,y:
integer);
forward;
proceduref1(x,y:
integer);
begin
ifxf2(y,x+y);
end;
proceduref2(x,y:
integer);
begin
write(x,’’);
f1(y,x+y);
end;
begin
readln(n);
f1(0,1);
end.
输入:
30
输出:
_____________
3.
const
V=100;
var
visited:
array[1..v]ofboolean;
e:
array[1..V,1..V]ofinteger;
n,m,ans,i,j,a,b,c:
integer;
proceduredfs(x,len:
integer);
var
I:
integer;
begin
visited[x]:
=true;
iflen>ansthenans:
=len;
fori:
=1tondo
if(notvisited[i])and(e[x,i]<>-1)then
dfs(i,len+e[x,i]);
visited[x]:
=false;
end;
begin
readln(n,m);
fori:
=1tondo
forj:
=1tondo
e[i][j]:
=-1;
fori:
=1tomdo
begin
readln(a,b,c);
e[a][b]:
=c;
e[b][a]:
=c;
end;
fori:
=1tondo
visited[i]:
=false;
ans:
=0;
fori:
=1tondo
dfs(i,0);
writeln(ans);
end.
输入:
46
1210
2320
3430
4140
1350
2460
输出:
__________
4.
const
SIZE=10000;
LENGTH=10;
var
sum:
longint;
n,m,i,j:
integer;
a:
array[1..SIZE,1..LENGTH]ofinteger;
functionh(u,v:
integer):
integer;
var
ans,i:
integer;
begin
ans:
=0;
fori:
=1tondo
ifa[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)and(a[m][i]=1)do
inc(i);
ifi>nthen
break;
inc(m);
a[m][i]:
=1;
forj:
=i+1tondo
a[m][j]:
=a[m-1][j];
untilfalse;
sum:
=0;
fori:
=1tomdo
forj:
=1tomdo
sum:
=sum+h(i,j);
writeln(sum);
end.
输入:
7
输出:
____________
五、完善程序(共2题,每题14分,共计28分)
1.(双子序列最大和)给定一个长度为n(3≤n≤1000)的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出这个最大和。
一个连续子序列的序列和为该连续子序列中所有数之和。
要求:
每个连续子序列长度至少为1,且两个连续子序列之间至少间隔1个数。
(第五空4分,其余2.5分)
const
MAXN=1000;
var
n,i,ans,sum:
longint;
x:
array[1..MAXN]oflongint;
lmax:
array[1..MAXN]oflongint;
//lmax[i]为仅含x[i]及x[i]左侧整数的连续子序列的序列和中,最大的序列和rmax:
array[1..MAXN]oflongint;
//rmax[i]为仅含x[i]及x[i]右侧整数的连续子序列的序列和中,最大的序列和
begin
read(n);
fori:
=1tondo
read(x[i]);
lmax[1]:
=x[1];
fori:
=2tondo
iflmax[i-1]<=0thenlmax[i]:
=x[i]
else
lmax[i]:
=lmax[i-1]+x[i];
fori:
=2tondo
iflmax[i]=lmax[i-1];
(1)
fori:
=n-1downto1do
ifrmax[i+1]<=0then
(2)
Else
(3)
fori:
=n-1downto1do
ifrmax[i](4)
ans:
=x[1]+x[3];
fori:
=2ton-1do
begin
sum:
=(5)
ifsum>ansthen
ans:
=sum;
end;
writeln(ans);
end.
2.(最短路径问题)无向连通图G有n个结点,依次编号为1,2,3,...,n。
用邻接矩阵的形式给出每条边的边长,要求输出以结点1为起点出发,到各结点的最短路径长度。
使用Dijkstra算法解决该问题:
利用dist数组记录当前各结点与起点的已找到的最短路径长度;每次从未扩展的结点中选取dist值最小的结点v进行扩展,更新与v相邻的结点的dist值;不断进行上述操作直至所有结点均被扩展,此时dist数据中记录的值即为各结点与起点的最短路径长度。
(第五空2分,其余3分)
const
MAXV=100;
var
n,i,j,v:
longint;
w:
array[1..MAXV,1..MAXV]oflongint;//邻接矩阵,记录边长//其中w[i,j]为连接结点i和结点j的无向边长度,若无边则为-1
dist:
array[1..MAXV]oflongint;
used:
array[1..MAXV]oflongint;
//记录结点是否已扩展(0:
未扩展;1:
已扩展)
begin
read(n);
fori:
=1tondo
forj:
=1tondo
read(w[i,j]);
dist[1]:
=0;
fori:
=2tondo
dist[i]:
=-1;
fori:
=1tondo
used[i]:
=0;
whiletruedo
begin
(1)
fori:
=1tondo
if(used[i]<>1)and(dist[i]<>-1)
and((v=-1)or(
(2)))then
(3)
ifv=-1then
break;
(4);
Fori:
=1tondo
if(w[v,i]<>-1)and((dist[i]=-1)or((5)))then
dist[i]:
=dist[v]+w[v,i];
end;
fori:
=1tondo
writeln(dist[i]);
end.