NOIP提高组C初赛试题.docx

上传人:b****5 文档编号:14727156 上传时间:2023-06-26 格式:DOCX 页数:19 大小:77.39KB
下载 相关 举报
NOIP提高组C初赛试题.docx_第1页
第1页 / 共19页
NOIP提高组C初赛试题.docx_第2页
第2页 / 共19页
NOIP提高组C初赛试题.docx_第3页
第3页 / 共19页
NOIP提高组C初赛试题.docx_第4页
第4页 / 共19页
NOIP提高组C初赛试题.docx_第5页
第5页 / 共19页
NOIP提高组C初赛试题.docx_第6页
第6页 / 共19页
NOIP提高组C初赛试题.docx_第7页
第7页 / 共19页
NOIP提高组C初赛试题.docx_第8页
第8页 / 共19页
NOIP提高组C初赛试题.docx_第9页
第9页 / 共19页
NOIP提高组C初赛试题.docx_第10页
第10页 / 共19页
NOIP提高组C初赛试题.docx_第11页
第11页 / 共19页
NOIP提高组C初赛试题.docx_第12页
第12页 / 共19页
NOIP提高组C初赛试题.docx_第13页
第13页 / 共19页
NOIP提高组C初赛试题.docx_第14页
第14页 / 共19页
NOIP提高组C初赛试题.docx_第15页
第15页 / 共19页
NOIP提高组C初赛试题.docx_第16页
第16页 / 共19页
NOIP提高组C初赛试题.docx_第17页
第17页 / 共19页
NOIP提高组C初赛试题.docx_第18页
第18页 / 共19页
NOIP提高组C初赛试题.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

NOIP提高组C初赛试题.docx

《NOIP提高组C初赛试题.docx》由会员分享,可在线阅读,更多相关《NOIP提高组C初赛试题.docx(19页珍藏版)》请在冰点文库上搜索。

NOIP提高组C初赛试题.docx

NOIP提高组C初赛试题

第二十二届全国青少年信息学奥林匹克联赛初赛

提高组C++语言试题

竞赛时间:

2016年10月22日14:

30~16:

30

选手注意:

●试题纸共有13页,答题纸共有2页,满分100分。

请在答题纸上作答,写

在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

 

一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)

1.以下不是微软公司出品的软件是()。

A.PowerpointB.Word

C.ExcelD.AcrobatReader

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.二进制数和异或的结果是()。

A.B.C.D.

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

 

CCFNOIP2016初赛提高组C++语言试题第1页,共13页

9.某计算机的CPU和内存之间的地址总线宽度是32位(bit),这台计算机最多可以使用()的内存。

A.2GBB.4GBC.8GBD.16GB

10.有以下程序:

#includeusingnamespacestd;

intmain(){

intk=4,n=0;while(n

n++;

if(n%3!

=0)continue;

k--;

}

cout<

}

程序运行后的输出结果是()。

A.2,2B.2,3C.3,2D.3,3

11.有7个一模一样的苹果,放到3个一样的盘子中,一共有()种放法。

A.7B.8C.21D.37

12.Lucia和她的朋友以及朋友的朋友都在某社交网站上注册了账号。

下图是他们之间的关系图,两个人之间有边相连代表这两个人是朋友,没有边相连代表

不是朋友。

这个社交网站的规则是:

如果某人A向他(她)的朋友B分享了某张照片,那么B就可以对该照片进行评论;如果B评论了该照片,那么他(她)的所有朋友都可以看见这个评论以及被评论的照片,但是不能对该照

 

CCFNOIP2016初赛提高组C++语言试题第2页,共13页

片进行评论(除非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)

1.给定含有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分;每题有一个或多个正确选项,多选或少选均不得分)

 

CCFNOIP2016初赛提高组C++语言试题第3页,共13页

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×8的方格图形(不可旋转)用黑、白两种颜色填涂每个方格。

如果每个方格只能填涂一种颜色,且不允许两个黑格相邻,共有_________种填涂方案。

2.某中学在安排期末考试时发现,有7个学生要参加7门课程的考试,下表列出了哪些学生参加哪些考试(用√表示要参加相应的考试)。

最少要安排_________个不同的考试时间段才能避免冲突?

 

CCFNOIP2016初赛提高组C++语言试题第4页,共13页

考试

学生1

学生2

学生3

学生4

学生5

学生6

学生7

通用技术

物理

化学

生物

历史

地理

政治

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

1.#includeusingnamespacestd;

intmain(){

inta[6]={1,2,3,4,5,6};intpi=0;

intpj=5;intt,i;

while(pi

t=a[pi];

a[pi]=a[pj];

a[pj]=t;pi++;

pj--;

}

for(i=0;i<6;i++)cout<

cout<

}

输出:

_________

2.#includeusingnamespacestd;

intmain(){

chara[100][100],b[100][100];stringc[100];

stringtmp;

intn,i=0,j=0,k=0,total_len[100],length[100][3];

 

CCFNOIP2016初赛提高组C++语言试题

第5页,共13页

 

cin>>n;

getline(cin,tmp);

for(i=0;i

getline(cin,c[i]);

total_len[i]=c[i].size();

}

for(i=0;i

j=0;

while(c[i][j]!

=':

'){

a[i][k]=c[i][j];

k=k+1;

j++;

}

length[i][1]=k-1;

a[i][k]=0;

k=0;

for(j=j+1;j

b[i][k]=c[i][j];

k=k+1;

}

length[i][2]=k-1;

b[i][k]=0;

k=0;

}

for(i=0;i

if(length[i][1]>=length[i][2])

cout<<"NO,";

else{

k=0;

for(j=0;j

if(a[i][k]==b[i][j])

k=k+1;

if(k>length[i][1])break;

}

if(j==length[i][2])

cout<<"NO,";

else

cout<<"YES,";

}

}

cout<

return0;

 

CCFNOIP2016初赛提高组C++语言试题

第6页,共13页

 

}

输入:

3AB:

ACDEbFBkBDAR:

ACDBrT

SARS:

SevereAtypicalRespiratorySyndrome输出:

_________

(注:

输入各行前后均无空格)

 

3.#include

usingnamespacestd;

intlps(stringseq,inti,intj){

intlen1,len2;

if(i==j)return1;

if(i>j)return0;

if(seq[i]==seq[j])

returnlps(seq,i+1,j-1)+2;

len1=lps(seq,i,j-1);

len2=lps(seq,i+1,j);

if(len1>len2)

returnlen1;

returnlen2;

}

intmain(){

stringseq="acmerandacm";

intn=seq.size();

cout<

return0;

}

输出:

_________

 

4.#include

#include

usingnamespacestd;

intmap[100][100];

intsum[100],weight[100];

intvisit[100];

 

CCFNOIP2016初赛提高组C++语言试题

第7页,共13页

 

intn;

voiddfs(intnode){

visit[node]=1;

sum[node]=1;

intv,maxw=0;

for(v=1;v<=n;v++){

if(!

map[node][v]||visit[v])

continue;

dfs(v);

sum[node]+=sum[v];

if(sum[v]>maxw)

maxw=sum[v];

}

if(n-sum[node]>maxw)

maxw=n-sum[node];

weight[node]=maxw;

}

intmain(){

memset(map,0,sizeof(map));

memset(sum,0,sizeof(sum));

memset(weight,0,sizeof(weight));

memset(visit,0,sizeof(visit));

cin>>n;

inti,x,y;

for(i=1;i

cin>>x>>y;

map[x][y]=1;

map[y][x]=1;

}

dfs

(1);

intans=n,ansN=0;

for(i=1;i<=n;i++)

if(weight[i]

ans=weight[i];

ansN=i;

}

cout<

return0;

}

输入:

11

 

CCFNOIP2016初赛提高组C++语言试题

第8页,共13页

 

12

13

24

25

26

37

78

711

69

910

输出:

_________

 

五、完善程序(共2题,每题14分,共计28分)

1.(交朋友)根据社会学研究表明,人们都喜欢找和自己身高相近的人做朋友。

现在有n名身高两两不相同的同学依次走入教室,调查人员想预测每个人在走入教室的瞬间最想和已经进入教室的哪个人做朋友。

当有两名同学和这名同学的身高差一样时,这名同学会更想和高的那个人做朋友。

比如一名身高为1.80米的同学进入教室时,有一名身高为1.79米的同学和一名身高为1.81米的同学在教室里,那么这名身高为1.80米的同学会更想和身高为1.81米的同学做朋友。

对于第一个走入教室的同学我们不做预测。

由于我们知道所有人的身高和走进教室的次序,所以我们可以采用离线的做法来解决这样的问题,我们用排序加链表的方式帮助每一个人找到在他之前进入教室的并且和他身高最相近的人。

(第一空2分,其余3分)

#includeusingnamespacestd;#defineMAXN200000

#defineinfinity2147483647

intanswer[MAXN],height[MAXN],previous[MAXN],next[MAXN];intrank[MAXN];

intn;

voidsort(intl,intr){

intx=height[rank[(l+r)/2]],i=l,j=r,temp;while(i<=j)

{

while(height[rank[i]]x)j--;

if(

(1)){

temp=rank[i];rank[i]=rank[j];rank[j]=temp;

 

CCFNOIP2016初赛提高组C++语言试题

第9页,共13页

i++;j--;

}

}

if(i

if(l

}

intmain()

{

cin>>n;

inti,higher,shorter;

for(i=1;i<=n;i++){

cin>>height[i];

rank[i]=i;

sort(1,n);

for(i=1;i<=n;i++){

previous[rank[i]]=rank[i-1];

(2);

}

for(i=n;i>=2;i--){

higher=shorter=infinity;

if(previous[i]!

=0)

shorter=height[i]-height[previous[i]];if(next[i]!

=0)

(3);

if((4))

answer[i]=previous[i];

else

answer[i]=next[i];

next[previous[i]]=next[i];

(5);

}

for(i=2;i<=n;i++)

cout<

"<

return0;

}

2.(交通中断)有一个小国家,国家内有n座城市和m条双向的道路,每条道路连接着两座不同的城市。

其中1号城市为国家的首都。

由于地震频繁可能导致某一个城市与外界交通全部中断。

这个国家的首脑想知道,如果只有第i(i>1)个城市因地震而导致交通中断时,首都到多少个城市的最短路径长度会发生改变。

如果因为无法通过第i个城市而导致从首都出发无法到达某个城

CCFNOIP2016初赛提高组C++语言试题

第10页,共13页

 

市,也认为到达该城市的最短路径长度改变。

对于每一个城市i,假定只有第i个城市与外界交通中断,输出有多少个城市会因此导致到首都的最短路径长度改变。

我们采用邻接表的方式存储图的信息,其中head[x]表示顶点x的第一条边的编号,next[i]表示第i条边的下一条边的编号,point[i]表示第i条边的终点,weight[i]表示第i条边的长度。

(第一空2分,其余3分)

#include#includeusingnamespacestd;#defineMAXN6000#defineMAXM100000

#defineinfinity2147483647

inthead[MAXN],next[MAXM],point[MAXM],weight[MAXM];intqueue[MAXN],dist[MAXN],visit[MAXN];

intn,m,x,y,z,total=0,answer;

voidlink(intx,inty,intz){

total++;

next[total]=head[x];head[x]=total;point[total]=y;weight[total]=z;total++;

next[total]=head[y];head[y]=total;point[total]=x;weight[total]=z;

}

intmain(){

inti,j,s,t;cin>>n>>m;

for(i=1;i<=m;i++){

cin>>x>>y>>z;link(x,y,z);

}

for(i=1;i<=n;i++)dist[i]=infinity;

(1);

queue[1]=1;

visit[1]=1;

s=1;

 

CCFNOIP2016初赛提高组C++语言试题第11页,共13页

 

t=1;

//使用SPFA求出第一个点到其余各点的最短路长度

while(s<=t){

x=queue[s%MAXN];

j=head[x];

while(j!

=0){

if(

(2)){

dist[point[j]]=dist[x]+weight[j];

if(visit[point[j]]==0){

t++;

queue[t%MAXN]=point[j];

visit[point[j]]=1;

}

}

j=next[j];

}

(3);

s++;

}

for(i=2;i<=n;i++){

queue[1]=1;

memset(visit,0,sizeof(visit));

visit[1]=1;

s=1;

t=1;

while(s<=t){//判断最短路长度是否不变

x=queue[s];

j=head[x];

while(j!

=0){

if(point[j]!

=i&&(4)

&&visit[point[j]]==0){

(5);

t++;

queue[t]=point[j];

}

j=next[j];

}

s++;

}

answer=0;

for(j=1;j<=n;j++)answer+=1-visit[j];

cout<

"<

 

CCFNOIP2016初赛提高组C++语言试题

第12页,共13页

}

return0;

}

 

CCFNOIP2016初赛提高组C++语言试题第13页,共13页

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

当前位置:首页 > 小学教育

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

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