NOIP提高组初赛及答案PascalWord格式文档下载.docx

上传人:b****1 文档编号:4768788 上传时间:2023-05-04 格式:DOCX 页数:21 大小:599.19KB
下载 相关 举报
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第1页
第1页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第2页
第2页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第3页
第3页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第4页
第4页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第5页
第5页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第6页
第6页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第7页
第7页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第8页
第8页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第9页
第9页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第10页
第10页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第11页
第11页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第12页
第12页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第13页
第13页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第14页
第14页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第15页
第15页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第16页
第16页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第17页
第17页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第18页
第18页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第19页
第19页 / 共21页
NOIP提高组初赛及答案PascalWord格式文档下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

NOIP提高组初赛及答案PascalWord格式文档下载.docx

《NOIP提高组初赛及答案PascalWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《NOIP提高组初赛及答案PascalWord格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。

NOIP提高组初赛及答案PascalWord格式文档下载.docx

C.由研究海豚,发明声纳D.由研究电鱼,发明伏特电池

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

每题有一个或多个正确选项,多选或少选均不得分)

1.如果对于所有规模为n的输入,一个算法均恰好进行()次运算,我们可以说该算法的时间复杂度为

A.

B.

C.

D.

2.从顶点

出发,对有向图()进行广度优先搜索(BFS)时,一种可能的遍历顺序是

3.如果一个栈初始时为空,且当前栈中的元素从栈顶到栈底依次为a,b,c(如右图所示),另有元素d已经出栈,则可能的入栈顺序是(AD)。

A.a,b,c,dB.b,a,c,d

C.a,c,b,dD.d,a,b,c

4.在计算机显示器所使用的RGB颜色模型中,(BD)属于三原色之一。

A.黄色B.蓝色C.紫色D.绿色

5.一棵二叉树一共有19个节点,其叶子节点可能有(ABC)个。

A.1B.9C.10D.15

6.已知带权有向图G上的所有权值均为正整数,记顶点u到顶点v的最短路径的权值为

是图G上的顶点,且它们之间两两都存路径可达,则以下说确的有()。

的最短路径可能包含一个环

B.

C.

D.如果

的一条最短路径,那么

的一条最短路径

7.逻辑异或(

)是一种二元运算,其真值表如下所示。

a

b

False

True

Flase

以下关于逻辑异或的性质,正确的有(AB)。

A.交换律:

B.结合律:

C.关于逻辑与的分配律:

D.关于逻辑或的分配律:

8.十进制下的无限循环小数(不包括循环节的数字均为0成均为9的平凡情况),在二进制下有可能是()。

A.无限循环小数(不包括循环节的数字均为0或均为9的平凡情)

B.无限不循环小数C.有限小数D.整数

9.(CD)是目前互联网上常用的E-mail服务协议。

A.HTTPB.FTPC.POP3D.SMTP

10.以下关于计算复杂度的说法中,正确的有(BD)。

A.如果一个问题不存在多项式时间的算法,那它一定是NP类问题

B.如果一个问题不存在多项式时间的算法,那它一定不是P类问题

C.如果一个问题不存在多项式空间的算法,那它一定是NP类问题

D.如果一个问题不存在多项式空间的算法,那它一定不是P类问题

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

1.本题中,我们约定布尔表达式只能包含p,q,r三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(¬)三种布尔运算。

如果无论p,q,r如何取值,两个布尔表达式的值总是相同,则称它们等价。

例如(p∨q)∨r和p∨(q∨r)等价,p∨¬p和q∨¬q也等价;

而p∨q和p∧q不等价。

那么两两不等价的布尔表达式最多有个。

2.对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。

例如,图1有5个不同的独立集(1个双点集合,3个单点集合、1个空集),图2有14个不同的独立集。

那么图3有个不同的独立集。

三、阅读程序写结果。

(共4题,每题8分,共计32分)

1.

var

n,i,temp,sum:

integer;

a:

array[1..100]ofinteger;

begin

readln(n);

fori:

=1tondo

read(a[i]);

=1ton-1do

ifa[i]>

a[i+1]then

begin

temp:

=a[i];

a[i]:

=a[i+1];

a[i+1]:

=temp;

end;

=ndownto2do

ifa[i]<

a[i-1]then

=a[i-1];

a[i-1]:

sum:

=0;

=2ton-1do

inc(sum,a[i]);

writeln(sumdiv(n-2));

end.

输入:

8

4070507020401030

输出:

______________

2.

n,i,ans:

functiongcd(a,b:

integer):

integer;

ifamodb=0

thengcd:

=0;

elsegcd:

=gcd(b,amodb);

end;

ans:

ifgcd(n,i)=i

thenans:

=ans+1;

writeln(ans);

120

_____________

3.

data:

array[1..20]ofinteger;

n,i,h,ans:

proceduremerge;

data[h-1]:

=data[h-1]+data[h];

dec(h);

inc(ans);

h:

=1;

data[h]:

=2tondo

begin

inc(h);

data[h]:

while(h>

1)and(data[h]=data[h-1])do

merge;

end;

(1)

______________(4分)

(2)

2012

4.

var

left,right,father:

array[1..20]ofinteger;

sl,s2,s3:

string;

n,ana:

procedurecheck(x:

integer);

ifleft[x]>

0thencheck(left[x));

s3:

=s3+sl[x];

ifright[x]>

0thencheck(right[x]);

procedurecalc(x,dep:

ans:

=ans+dep*(ord(sl[x])-ord('

A'

)+1);

ifleft[x]>

0thencalc(left[x],dep+l);

0thencalc(right[x),dep+l);

proceduredfs(x,th:

ifth=n+1then

='

'

;

check

(1);

ifs2=s3then

ans:

calc(1,1);

writeln(ans);

exit;

if(left[x]=0)and(right[x]=0)then

left[x):

=th;

father[th]:

=x;

dfs(th,th+1);

left[x]:

ifright[x]=0then

right[x]:

=X;

if(father[x]>

0)then

dfs(father[x],th);

readln(s1);

readln(s2);

n:

=length(s1);

fillchar(left,sizeof(left),0);

fillchar(right,sizeof(right),0);

fillcahr(father,sizeof(father),0);

dfs(1,2);

ABCDEF

BCAEDF

____________

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

1.(排列数)输入两个正整数

,在

中任取

个数,按字典序从小到大输出所有这样的排列。

例如

32

12

13

21

23

31

const

SIZE=20;

used:

array[1..SIZE]ofboolean;

array[1..SIZE]ofinteger;

n,m,i,j,k:

flag:

boolean;

readln(n,m);

fillchar(used,sizeof(used),false);

=1tomdo

data[i]:

=i;

used[i]:

=true;

whileflagdo

fori:

=1tom-1dowrite(data[i],'

'

);

writeln(data[m]);

flag:

=①;

fori:

=mdownto1do

②;

forj:

=data[i]+1tondoifused[j]=falsethen

begin

used[j]:

data[i]:

=③;

flag:

break;

end;

ifflagthen

fork:

=i+ltomdo

forj:

=1to④doifused[j]=falsethen

begin

data[k]:

=j;

used[j]:

break;

end;

⑤;

2.(新壳栈)小Z设计了一种新的数据结构“新壳栈”。

首先,它和传统的栈一样支持压入、弹出操作。

此外,其栈顶的前c个元素是它的壳,支持翻转操作。

其中,c>

2是一个固定的正整数,表示壳的厚度。

小Z还希望,每次操作,无论是压入、弹出还是翻转,都仅用与c无关的常数时间完成。

聪明的你能帮助她编程实现“新壳栈”吗?

程序期望的实现效果如以下两表所示。

其中,输入的第一行是正整数c,之后每行输入都是一条指令。

另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不足c个,应当输出相应的错误信息。

指令

涵义

1[空格]e

在栈顶压入元素e

2

弹出(并输出)栈顶元素

3

翻转栈顶的前c个元素

退出

表1:

指令的涵义

输入

输出

栈中的元素

(左为栈底,右为栈顶)

说明

输入正整数c

11

1

压入元素1

压入元素2

123

压入元素3

14

1234

压入元素4

1432

15

14325

压入元素5

14523

1452

弹出栈顶元素3

145

弹出栈顶元素2

5

弹出栈顶元素5

错误信息

由于栈中元素不足c个,无法翻转,故操作失败,输出错误信息

4

弹出栈顶元素4

弹出栈顶元素1

表2:

输入输出样例

const

NSIZE=100000;

CSIZE=1000;

n,c,r,tail,head:

longint;

s:

array[1..NSIZE]oflongint;

//数组s模拟一个栈,n为栈的元素个数

q:

array[1..CSIZE]oflongint;

//数组q模拟一个循环队列,tail为队尾的下标,head为队头的下标

direction,empty:

functionprevious(k:

longint):

ifdirectionthen

previous:

=((k+c-2)modc)+1;

else

=(kmodc)+1;

functionnext(k:

ifdirectionthen

next:

=((k+c-2)modc)+1;

procedurepush;

element:

read(element);

ifnext(head)=tailthen

inc(n);

②;

tail:

=next(tail);

ifemptythen

empty:

=false

else

head:

=next(head);

③:

=element;

procedurepop;

writeln('

Error:

thestackisempty!

end:

writeln(④);

iftail=headthen

empty:

=true

head:

=previous(head);

ifn>

0then

=previous(tail);

⑤:

=s[n];

dec(n);

procedurereverse;

temp:

if⑥=tailthen

direction:

=notdirection;

=head;

=tail;

tail:

endelse

writeln('

lessthan'

c,'

elementsinthestack!

readln(c);

repeat

read(r);

caserof

1:

push;

2:

pop;

3:

reverse;

untilr=0;

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2