参考借鉴全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题docxWord文档格式.docx
《参考借鉴全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题docxWord文档格式.docx》由会员分享,可在线阅读,更多相关《参考借鉴全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题docxWord文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
7.二进制数00101100和00010101的和是()。
A.00101000
B.01000001
C.01000100
D.00111000
8.与二进制小数0.1相等的八进制数是()。
A.0.8
B.0.4
C.0.2
D.0.1
9.以下是32位机器和64位机器的区别的是()。
A.显示器不同
B.硬盘大小不同
C.寻址空间不同
D.输入法不同
10.以下关于字符串的判定语句中正确的是()。
A.字符串是一种特殊的线性表
B.串的长度必须大于零
C.字符串不可以用数组来表示
D.空格字符组成的串就是空串
11.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i则其左孩子位于下标2i处、右孩子位于下标(2i1)处),则图中所有结点的最大下标为()。

B.10
C.12
D.15
12.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。
s=a;
for(b=1;
b<
=c;
b)s=s1;
则与上述程序段修改s值的功能等价的赋值语句是()。
A.s=ab;
B.s=ac;
C.s=sc;
D.s=bc;
13.有以下程序#includeusingnamespacestd;
intmain(){intk=4,n=0;
while(n<
k){n;
if(n%3!
=0)continue;
k--;
}cout<
<
k<
"
"
n<
endl;
return0;
}程序运行后的输出结果是()。
A.2,2
B.2,3
C.3,2
D.3,3
14.给定含有n个不同的数的数组L=。
如果L中存在Pi(1<
i<
n)使得P1<
P2<
...<
Pi-1<
Pi>
Pi1>
...>
Pn,则称L是单峰的并称Pi是L的“峰顶”。
现在已知L是单峰的请把a-c三行代码补全到算法中使得算法正确找到L的峰顶。
a.Search(k1,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[k1]3.then__________4.elseifL[k]>
L[k-1]andL[k]<
L[k1]5.then__________6.else__________正确的填空顺序是()。
A.c,a,b
B.c,b,a
C.a,b,c
D.b,a,c
15.设简单无向图G有16条边且每个顶点的度数都是2,则图G有()个顶点。
A.10
B.12
D.16
16.有7个一模一样的苹果,放到3个一样的盘子中,一共有()种放法。
A.7
B.8
C.21
D.3^7
17.下图表示一个果园灌溉系统,有A、B、C、D四个阀门,每个阀门可以打开或关上,所有管道粗细相同,以下设置阀门的方法中可以让果树浇上水的是()。
A.B打开,其他都关上
B.AB都打开,CD都关上
C.A打开,其他都关上
D.D打开,其他都关上
18.Lucia和她的朋友以及朋友的朋友都在某社交网站上注册了账号。
下图是他们之间的关系图,两个人之间有边相连代表这两个人是朋友,没有边相连代表不是朋友。
这个社交网站的规则是:
如果某人A向他(她)的朋友B分享了某张照片,那么B就可以对该照片进行评论;
如果B评论了该照片,那么他(她)的所有朋友都可以看见这个评论以及被评论的照片,但是不能对该照片进行评论(除非A也向他(她)分享了该照片)。
现在Lucia已经上传了一张照片(但是她不想让Jacob看见这张照片,那么她可以向以下朋友()分享该照片。
A.Dana,Michael,Eve
B.Dana,Eve,Monica
C.Michael,Eve,Jacob
D.Micheal,Peter,Monica
19.周末小明和爸爸妈妈三个人一起想动手做三道菜。
小明负责洗菜、爸爸负责切菜、妈妈负责炒菜。
假设做每道菜的顺序都是:
先洗菜10分钟,然后切菜10分钟,最后炒菜10分钟。
那么做一道菜需要30分钟。
注意:
两道不同的菜的相同步骤不可以同时进行。
例如第一道菜和第二道的菜不能同时洗也不能同时切。
那么做完三道菜的最短时间需要()分钟。
A.90
B.60
C.50
D.40
20.参加NOI比赛,以下不能带入考场的是()。
A.钢笔
B.适量的衣服
C.U盘
D.铅笔
二、问题求解(共2题,每题5分,共计10分;
第一题目全部答对得5分,没有部分分;
第二题第一空2分,第二空3分)
1.从一个4×
4的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格,共有_________种方法。
答案:
72
2.约定二叉树的根节点高度为1。
一棵结点数为2016的二叉树最少有_________个叶子结点;
一棵结点数为2016的二叉树最小的高度值是_________。
1,11
三、阅读程序写结果(共4题,每题8分,共计32分)
1.
#include<
iostream>
usingnamespacestd;
intmain(){
intmaP,min,sum,count=0;
inttmp;
cin>
>
tmp;
if(tmp==0)
maP=min=sum=tmp;
count;
while(tmp!
=0){
if(tmp!
sum=tmp;
if(tmp>
maP)
maP=tmp;
if(tmp<
min)
min=tmp;
}
cout<
maP<
min<
sum/count<
输入:
12345607
输出:
6,1,3
2.
inti=100,P=0,P=0;
while(i>
0){
i--;
P=i%8;
if(P==1)
P;
P<
13
3.
inta[6]={1,2,3,4,5,6};
intpi=0;
intpj=5;
intt,i;
while(pi<
pj){
t=a[pi];
a[pi]=a[pj];
a[pj]=t;
pi;
pj--;
for(i=0;
6;
i)
a[i]<
;
6,5,4,3,2,1,
4.
inti,length1,length2;
strings1,s2;
s1="
Ihaveadream."
s2="
IHaveADream."
length1=s1.size();
length2=s2.size();
length1;
if(s1[i]>
='
a'
&
s1[i]<
z'
)
s1[i]-='
-'
A'
length2;
if(s2[i]>
s2[i]<
s2[i]-='
if(s1==s2)
="
elseif(s1>
s2)
else
=
四、完善程序(共2题,每题14分,共计28分)
1.(读入整数)请完善下面的程序,使得程序能够读入两个int范围内的整数,并将这两个整数分别输出,每行一个。
(第一、五空2.5分,其余3分)
输入的整数之间和前后只会出现空格或者回车。
输入数据保证合法。
例如:
输入:
123-789
123
-789
intreadint(){
intnum=0;
//存储读取到的整数
intnegative=0;
//负数标识
charc;
//存储当前读取到的字符
c=cin.get();
while((c<
'
0'
||c>
9'
)&
c!
if(c=='
negative=1;
num=c-'
while(c>
c<
){
num=numK10c-'
if(negative==1)
return-num;
returnnum;
inta,b;
a=readint();
b=readint();
a<
endl<
2.(郊游活动)有n名同学参加学校组织的郊游活动,已知学校给这n名同学的郊游总经费为A元,与此同时第i位同学自己携带了Mi元。
为了方便郊游,活动地点提供B(≥n)辆自行车供人租用,租用第j辆自行车的价格为Cj元,每位同学可以使用自己携带的钱或者学校的郊游经费,为了方便账务管理,每位同学只能为自己租用自行车,且不会借钱给他人,他们想知道最多有多少位同学能够租用到自行车。
(第四、五空2.5分,其余3分)
本题采用二分法。
对于区间[l,r],我们取中间点mid并判断租用到自行车的人数能否达到mid。
判断的过程是利用贪心算法实现的。
#defineMAPN1000000
intn,B,A,M[MAPN],C[MAPN],l,r,ans,mid;
boolcheck(intnn){
intcount=0,i,j;
i=n-nn1;
j=1;
while(i<
=n){
if(M[i]<
C[j])
count=C[j]-M[i];
i;
j;
returncount<
=A;
voidsort(inta[],intl,intr){
inti=l,j=r,P=a[(lr)/2],P;
=j){
while(a[i]<
P)i;
while(a[j]>
P)j--;
if(i<
P=a[i];
a[i]=a[j];
a[j]=P;
j--;
r)sort(a,i,r);
if(l<
j)sort(a,l,j);
inti;
n>
B>
A;
for(i=1;
=n;
M[i];
=B;
C[i];
sort(M,1,n);
sort(C,1,B);
l=0;
r=n;
while(l<
=r){
mid=(lr)/2;
if(check(mid)){
ans=mid;
l=mid1;
}else
r=mid-1;
ans<