2018年第二十四届全国青少年信息学奥林匹克联赛初赛普及组真题解析

一、单项选择题

1. 以下哪一种设备属于输出设备:(D)

A.扫描仪 _B.键盘C. 鼠标 _D. 打印机

解析:送分题,前三个都是输入设备

2. 下列四个不同进制的数中,与其它三项数值上不相等的是(D)。

A.(269)16

B.(617)10

C.(1151)8

D.(1001101011)2

解析:

1)方法一:是把4个都换成10进制来比较。

2)方法二:直接通过二进制转八、十六进制的快速转换方法来判断。

二进制转八进制是3个并1个、转十六进制是4个并1个。

对D的二进制数分析:

(1001 101 011)2 = (1153)8

(100110 1011)2 = (26B)16

显然,与其它不符的只能是D

解析:有点难度,有点意思

3. 1MB 等于(D)。

A. 1000字节 B. 1024字节

C. 1000 X 1000字节 D. 1024 X1024字节

解析:2015年相同的题

1MB=1024KB, 1KB=1024字节

4. 广域网的英文缩写是(B)。

A.LAN

B.WAN

C.MAN

D.LNA

解析:

WAN:Wide area network

5. 中国计算机学会于(B)年创办全国青少年计算机程序设计竞赛。

A.1983

B.1984

C.1985

D.1986

解析:

1984年,邓小平说计算机的普及要从娃娃抓起,那一年的中国科协和计算机协会一起举办了全国青少年程序设计大赛

这个,只能靠记忆了,没办法。

6. 如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S、字母键D、字母键F的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、……,屏幕上输出的第81 个字符是字母(A)。

A. A

B. S

C. D

D. a

解析:有坑有坑,小心别掉坑!!

2016年的雷同题,本题思路如下:、

方法一:

CapsLock为大小写切换(没有输出),所以默认按键5个(输出4个)为一轮。

81 = 4*20 + 1,即从0轮开始,求第20轮的第一个输出。

开始状态为小写,第0轮为大写,第1轮为小写,依次类推,第20轮为大写。

所以答案为大写状态的第一个字符‘A’

方法二:以8个输出为一轮,每轮都重复输出,则81个字符与第1个字符相同。

7. 根节点深度为0,一棵深度为h 的满k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有k 个子结点的树,共有(A)个结点。

解析:

1)假设h=2,k=2,画出完美二叉树,共7个节点。

2)对4个答案代入运算,结果为A

如果想理解和推导公式:

8. 以下排序算法中,不需要进行关键字比较操作的算法是(A)。

A.基数排序

B.冒泡排序

C.堆排序

D.直接插入排序

解析:

  • 基数排序用桶数组来存储,利用桶数组的下标直接实现了排序,无需比较。
  • 后三个都要比较。

9. 给定一个含N 个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少需要N - 1 次比较操作。则最坏情况下,在该数组中同时找最大与最小的数至少需要(A)次比较操作。(⌈ _⌉表示向上取整,⌊ _⌋表示向下取整)

A.⌈ 3N-2⌉-2

B.⌊3N-2⌋-2

C.2N-2

D.2N-4

解析:

  • 如果分别找最大值、最小值,则至少都需要N-1次操作。
  • 同时找最大最小值,有更优化的方法,如果没有学过这个算法,本题只能根据题面猜测肯定小于2N-2,需在A和B里面蒙一个,50%几率。
  • 学过的话,按照下面的优化算法:
  • N为奇数时,比较次数为3*(N-1)/2 =(3N+1)/2 - 2
  • N为偶数时,比较次数为1 +3*(N-2)/2 = 3N/2 – 2
  • 综合奇偶,显然答案为A

找最大最小值的优化算法:

  • 初始值:
  • N为奇数,最大值、最小值的初始值都设为第一个元素。
  • N为偶数,将前两个元素比较,最大值初始值为大的元素,最小值初始值为小的元素。
  • 枚举,每次两个元素(循环步长为2)
  • 比较两个元素,分出大小。
  • 大的元素与最大值比较,比最大值大则设为该元素。
  • 小的元素与最小值比较,比最小值小则设为该元素。
  • 循环结束,得到最大、最小值。

10. 下面的故事与(B)算法有着异曲同工之妙。

从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事……’” _

A. 枚举

B. 递归

C. 贪心

D. 分治

解析:2013年相同的题。

11. 由四个没有区别的点构成的简单无向连通图的个数是(A)。

A.6

B.7

C.8

D.9

解析:

1) 四个区别的点,意味着以下的图形为相同形状。

用d=[1, 2, 2,1]表示对应点的度,则以上的图的d数组都是一样的。

2)而以下的图形则是不同的另外一个形状,其d=[1, 3, 1, 1]。

题目要求,实际就是找出不同的d数组的个数。

3)根据边数来分类判断:

  1. 小于3条边,不构成连通,排除掉。
  2. 3条边:d=[1, 2, 2, 1]和[1, 3,1,1]两种
  3. 4条边:d=[2,2,2,2]和[1,3,2,2]两种
  4. 5条边:d=[2,2,3,3]一种
  5. 6条边:d=[3,3,3,3]一种

一共6种不同的图形,答案是A。

4)简单图指没有平行边和自环,不要被它误导。

更多:从6条边往下减边,会更加容易分析。

12. 设含有10 个元素的集合的全部子集数为S,其中由7个元素组成的子集数为T,则T / S 的值为(B)。

A.5 / 32

B.15 / 128

C.1 / 8

D.21 / 128

解析:

  1. 子集总数S为 2的10次方= 1024
  2. 7个元素集合数T为C(10,7)=10!/(3!7!)= 120
  3. T/S = 120/1024 = 15/128

13. 10000 以内,与10000 互质的正整数有(B)个。

A.2000

B.4000

C.6000

D.8000

解析:

互质的意思,与10000没有公约数,也即不能被10000的质因子整除。

  • 10000分解质因子:10000 =2*2*2*2*5*5*5*5
  • 10000以内被2整除的数有5000个
  • 10000以内被5整除的数有2000个
  • 2)和3)重复计算的数,即被10整除的数,有1000个。
  • 被2或5整除的数有:5000 +2000 – 1000 =6000
  • 互质的数有:10000 - 6000 = 4000个

14. 为了统计一个非负整数的二进制形式中1 的个数,代码如下: _

intCountBit(int x)

{

intret = 0;

while(x)

{

ret++;

___________;

}

returnret;

}

则空格内要填入的语句是( B)。 _

A.x >>= 1

B.x &= x - 1

C.x |= x >> 1

D.x <<= 1

解析:

  • 如果知道x = x&(x-1)是二进制从后往前去掉1个1的话,答案B自然知道。
  • 如果不知道的话,就自己模拟一下吧,比如用一个数5=(101)2
  • A选项模拟,结果为3
  • B选项模拟,结果为2
  • C选项模拟,死循环
  • D选项模拟,死循环

15. 下图中所使用的数据结构是(B)。

解析:

2013年相同的题。

今年难度大了很多,也有很多毒瘤题..

这篇博客尝试详尽地解析NOIP2018普及初赛.

题目

答案

先附上答案

单项选择题

1.C

送分题 其他都是输入设备

2.D

A: (269)16=617

B: 617

C: (1151)8=617

D: (1001101011)2=619

3.D

常识性知识

1GB=1024KB=1024∗1024B

4.A

广域网-Wide Area Network-WAN

想Wide就可以了

5.B

CCF赞歌,最近几乎每年都有。

直接拿今年年份减去届数(2018-24=1984)。

6.A

小学奥数。在历年的基础上改了下。每8个字母(ASDFasdf

)一个循环,81

,所以为A.

7.A

可以正经推出。但考试的时候如果不知道那可以画几个例子,然后带进去算。算出来A为正确。

注意本题树根深度记做0.

8.A

基数排序就是桶排序,所以不用比较。

没听说过?

B.冒泡和D.插入一定知道吧,都需要对比。C.堆排,堆的数据插入后上浮下沉操作需要比对,所以排除法选A。

9.A

看题目首先排除C和D。

然后时间复杂度一般要考虑最坏所以向上取整(然而我还是错了)。

10.B

送分。

11.C

分类讨论。

如下所示:

     

12.B

注意空集

13.B

小学奥数,分解质因数10000=24∗54

,2的倍数有4999个,5的倍数有1999个,除去10(2和5的公倍数)999个,加上10000这一个数,不互质的就是6000个,互质的就是10000-6000=4000个

14.B

状压DP常规操作,实在不行模拟也可。

15.B

不用多说,先进先出,栈。

问题求解

1

小学奥数,从③推出丁不去,又从④推出甲去了,然后由①推出没下雨。

2

分类讨论。

1-9中:1个

10-99中:1*8+10=18个

100-999中:(1+18)*8+100=252个

1000-1999中:1+18+252=271个

2000-2018中:2个

总共 1+18+252+271+2=544个

注意最后的2个要加上去,我是不会说我没加的。

阅读程序写结果

1

读题意就是将所有大写字母变成字母后一位,如'A'变成'B','E'变成'F'.

输出:RuanHuoMianTai

2

读题意得 0-15 每一个数的平方模15 是不是等于1

枚举和模的时候要细心

输出:4

3

做的时候暴力模拟,后来知道可以用表格。

f[i][j]=f[i−1][j]−f[i][j−1]+f[i−1][j−1]

表格长这样

n/m
0 1 2 3 4 5 6
0 0 1 2 3 4 5 6
1 1 0 3 2 5 4 7
2 2 -1 4 1 6 3 8
3 0 1 2 3 4 5 6
4 1 0 3 2 5 4 7
5 2 -1 4 1 6 3 8

输出:8

4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
int n,d[100];
bool v[100];
int main(){
    scanf("%d",&n);
    for (int i=0;i<n;++i) {
        scanf("%d",d+i);
        v[i]=false;
    }
    int cnt=0;
    for (int i=0;i<n;++i) {
        if (!v[i]){
            for (int j=i;!v[j];j=d[j]) {
                v[j]=true;
            }
        ++cnt;
        }
    }
    printf("%d\n", cnt);
    return 0;
}

暴力模拟即可

输出:6

完善程序

1.最大公约数之和

(1)

i∗i

,枚举到n−−√

(2)

n/i

(3)

return a

(4)

a%b

(5)

gcd(a[i],a[j])+ans

2.双向链表求排列

(1)

a[x]=i

(2)

i+1

(3)

R[a[i]],对称填

(4)

a[i],刚开始对称填错了,双向链表操作

(5)

R[i]

NOIP2018普及初赛解析的更多相关文章

  1. NOIP2018普及组初赛解题报告

    本蒟蒻参加了今年的NOIP2018普及组的初赛 感觉要凉 总而言之,今年的题要说完全没有难度倒也不至于,还有不少拼RP的题,比如第一次问题求解考逻辑推理,第一次完善程序考双链表等 下面我就和大家一起看 ...

  2. NOIP2018普及组复赛游记

    2018年11月10日,NOIP2018普及组复赛. 这是我初中阶段最后一次复赛了. 和往常一样,我们在预定的早上7点,没有出发. 10分钟之后,人终于到齐了,于是出发了,一路无话. 到了南航,合照三 ...

  3. P5017 [NOIP2018 普及组] 摆渡车

    P5017 [NOIP2018 普及组] 摆渡车 题目 P5017 思路 将实际问题抽象后,不难发现这是一个 区间 \(DP\) 我们不妨认为时间是一条数轴,每名同学按照到达时刻分别对应数轴上可能重合 ...

  4. P5018 [NOIP2018 普及组] 对称二叉树

    P5018 [NOIP2018 普及组] 对称二叉树 题目 P5018 思路 通过hash值来判断左右树是否相等 \(hl[i]\) 与 \(Hl[i]\) 是防止hash冲突, \(r\) 同理 注 ...

  5. NOIp2018普及组初赛试卷

    第二十四届全国青少年信息学奥林匹克联赛初赛(普及组C++语言试题)

  6. [NOIP2018]普及组初赛题解

    老师布置的作业,借博客这个平台一用 [总体感觉]对我而言比去年的难度大……特别是最后一题. 选择题 1.D 打印机属于输出设备 2.D 将全部进制转换为10进制进行对比,我的方法是每一位乘以进制的位数 ...

  7. Noip2018普及组初赛试题解题报告

    解题思路: 一.单项选择题 (答案:DDDBBAAAABABBBB) 1.除D外,其余均为输入设备. 2.除D外,其余都等于(617)10 ,D选项为(619)10. 3.1MB=1024KB=102 ...

  8. NOIP2017普及组初赛解析

    首发于订阅号 嗨编程,这是一个以嗨为目标的编程订阅号(仅仅是目标而已),扫码可关注,不定期更.

  9. NOIP2017提高组初赛解析

    首发于订阅号 嗨编程,这是一个以嗨为目标的编程订阅号(仅仅是目标而已),扫码可关注,不定期更. 解析中引用了一张关于排序的总结课件图片,来源网络,如果侵权,请联系本人删除(没钱付版权费)

随机推荐

  1. rsync 远程拷贝

    rsync -vzP win7.qcow2 agu@192.168.1.198:/tmp/

  2. python doc格式转文本格式

    首先python是不能直接读写doc格式的文件的,这是python先天的缺陷.但是可以利用python-docx (0.8.6)库可以读取.docx文件或.txt文件,且一路畅通无阻. 这样的话,可以 ...

  3. Codeforces1102F Elongated Matrix 【状压DP】

    题目分析: 这题瞎搞一个哈密尔顿路,对于起点不同的分开跑就可以过了. $O(n^3*2^n)$ #include<bits/stdc++.h> using namespace std; ; ...

  4. apache Storm 学习笔记

    Storm流之FieldGrouping字段分组: https://blog.csdn.net/Simon_09010817/article/details/80092080

  5. 协方差(Covariance)

    统计学上用方差和标准差来度量数据的离散程度 ,但是方差和标准差是用来描述一维数据的(或者说是多维数据的一个维度),现实生活中我们常常会碰到多维数据,因此人们发明了协方差(covariance),用来度 ...

  6. opencv 图片旋转

    import cv2 as cv import numpy as np # 图片旋转 img = cv.imread('../images/face.jpg', flags=1) # flags=1读 ...

  7. 清北学堂Day3

    卷积公式(Dirichlet卷积) 这个式子看上去就很变态,那么他是什么意思呢: 就是说 函数f(x)和g(x)对于n的卷积等于n的每一个因子d在f(x)上的值乘上d/n在g(x)上的值的和 例:设g ...

  8. 【Noip2015】斗地主

    题目 #include<bits/stdc++.h> using namespace std; int pai[20],T; //pai[]统计牌的数量 int n; int ans; v ...

  9. python中assert()函数的使用

    关于assert()函数的使用,主要参考博客https://blog.csdn.net/qq_37119902/article/details/79637578 assert函数主要是用来声明某个函数 ...

  10. 安装python caffe过程中遇到的一些问题以及对应的解决方案

    关于系统环境: Ubuntu 16.04 LTS cuda 8.0 cudnn 6.5 Anaconda3 编译pycaffe之前需要配置文件Makefile.config ## Refer to h ...