NOIP2017预赛终于结束了。
普遍反映今年的卷子难度较大,但事实上是这样吗?马上我将为您详细地分析这张试卷,这样你就能知道到底难不难。
对了答案,鄙人考得还是太差了,只有91分。
那么下面我们就一起来看看这张试卷,共同反思,共同学习。
#一、单项选择
1、从( )年开始,NOIP竞赛将不再支持Pascal语言。
A、2020
B、2021
C、2022
D、2023
答案:C(感谢againfly-hk指正问题)
解析:​​​官方公告​​ 看了你就明白了,要注意2020年NOIP还是支持的。

2、在8位二进制补码中,10101011表示的数是十进制下的( )
A、43
B、-85
C、-43
D、-84
答案:B
解析:补码是什么?就是一个二进制码对每位取反,再加一,表示原数字的负数。所以我们倒退回去,先减一,得到10101010,再取反得01010101,转换为十进制为85,所以就是-85.

3、分辨率为1600*900、16位色得位图,存储图像信息所需的空间为( )
A、2812.5KB
B、4218.75KB
C、4320KB
D、2880KB
答案:A
解析:本来我可能不会做这一题,但由于大概两个礼拜前,学校的微机课正好上到了这个,所以就得分了。
先解释几个名词。
分辨率,表示长宽分别为多少像素,所以相乘的结果是像素点的个数。
16位色,表示每个像素点用16位的数据去表示颜色,也就是2B(字节,不是2逼)。
所以大小就是1600*900*2/1024KB=2812.5KB

4、2017年10月1日是星期日,1949年10月1日是( )
A、星期三
B、星期日
C、星期六
D、星期二
答案:C
解析:如果你的历史很好,就偷着乐吧!毕竟再怎么出题,也不能篡改历史。
但如果历史不好呢?不好算吗?也是很好算的。
首先两者相差68年,然后,我们还要考虑闰年,闰年的个数应该是2017/4-1949/4=17(注意取整了),但是我们还要考虑整百年是不是400的倍数,很明显2000是,所以是17个闰年,所以总的天数就是68*365+17,再对7取模就行。

5、设G是有n个节点、m条边(n<=m)的连通图,必须删去G的( )条边,才能是G变成一棵树。
A、m-n+1
B、m-n
C、m+n+1
D、n-m+1
答案:A
解析:一棵树一定只有n-1条边,所以是m-(n-1)

6、若算法的计算时间表示为递推关系式:
T(N)=2T(N/2)+NlogN
T(1)=1
则该算法的时间复杂度为( )
A、O(N)
B、O(NlogN)
C、O(Nlog^2N)
D、O(N^2)
答案:C
解析:最早,我也是不知道这类问题怎么做,一直很懵逼,即使问老师,依然不知道什么意思,但后来我自己琢磨出了这类题的做法。
具体做法是,递推,得到通项,然后找到时间复杂度最大的一项,哪个就是答案。
本题递推完后,你就会发现,有C选项中的那个式子,所以就是C

7、表达式a*(b+c)*d的后缀表达式是( )
A、abcd*+*
B、abc+d*
C、a
bc+*d
D、b+c*a*d
答案:B
解析:自己百度一下后缀表达式吧

8、由四个不同的点构成的简单无向连通图的个数为( )
A、32
B、35
C、38
D、41
答案:C
解析:这道题是一道简单的计数题
试想一下,构成一个四个节点的无向连通图至少需要几条边?很明显是3条,也就是说是一棵树,所以4,5,6条边也可以,所以答案应该是C(3,6)+C(4,6)+C(5,6)+C(6,6)-4,表示有3,4,5,6条边的种数之和,但为什么要减4呢?因为三条边的情况下有四种情形不行,即连成了一个三个节点的环,所以排除这种情况就好了。

9、将7个名额分给4个不同的班级,允许有的班级没有名额,有( )种不同的分配方案。
A、60
B、84
C、96
D、120
答案:D
解析:因为名额相同,班级不同,所以采用“插板法”。七个名额,一共有8个空可以插。先考虑中间两个班不为空的情况,是C(3,8),再考虑中间两个班级有一个为空的情况,那么就是C(2,8)*2,因为有两个板重合,所以可视为一个板,有因为有可能中间靠左的班级为空,也可能是中间靠右边的班级为空,所以要乘2。最后是中间两个班都为空,那么此时只有一个板,所以是C(1,8),把三个数加起来即可。
这道题的解析是基于大家对插板法有了解的前提,如果大家不了解,自行百度。

10、若f[0]=0,f[1]=1,f[n+1]=(f[n]+f[n-1])/2,则随着i的增大,f[i]将接近于( )。
A、1/2
B、2/3
C、(√5-1)/2
D、1
答案:B
解析:首先,给像我一样的蒟蒻的建议:考试时间也不多,一到选择题分值又很少,所以,你不妨试着写该数列的前几项,然后就能看出答案了。这样的话省时又能得分,对于像我一样的蒟蒻来说再好也不过了。
那么,对于大神,你可以求一下通项,再求一下极值,就能得出答案,如果你足够熟练,也不是很慢,在这里就不演示了,毕竟打数学符号也很麻烦。

​试题链接​​​​答案链接​​ 这里把试题和答案都给大家了,下面的试题将不会给题目,自己看一下,毕竟博主还要准备复赛。
感谢各位的理解。

11、答案:D
解析:这道题还是很简单的,既然两个序列都有序,那么我们只需要从两个序列的小端比较,依次把小的数放入新序列即可,基本上是比较一次放一个数,那么比较次数的差异出现在哪呢?就在于两个序列当中有一个为空时,剩下的一个序列剩余元素的个数,因为这些数字是不需要比较的,可以直接放入新序列,因为他本身就是有序的。所以剩的数字越少,则通过比较放入的数字越多,比较次数越多,所以剩下数字最少为一个,所以比较次数最多为2n-1

12、答案:D
解析:我们先看第一个空,是在if中的,而if的条件是,X和Y的质量不相等,那么假币肯定在X和Y中,所以我们只要把搜索范围锁定在X和Y的并集就行,所以我们选择a这个语句,其实这里答案已经出来了,但我还是要继续讲完(良心博主)
第二个空前面是个else,那就相当于取if中相反的条件,也就是X和Y质量相等,那么很明显假币在Z中,所以我们就将搜索范围锁定在Z,所以是语句b
第三个空,很显然就是求一下搜索范围的元素个数,便于判断搜索是否完成,或是继续下面的分组。
这样,这道题就讲完了。

13、答案:A
解析:这道题就是动态规划的经典问题,数字三角形,如果你了解过动态规划,相信你能很轻易的做出这道题,这里没法拓展讲动态规划,所以就不做解释了。

14、答案:D
解析:俗话说:“正难则反”(真的是俗话?),所以我们来求旅行失败的情况,然后用1减去即得结果。
失败的情况就两种,1晚点(概率:0.1*0.8*1=0.08),2晚点(概率:1*0.2*0.9=0.18),所以总共是0.26,所以成功概率就是0.74.

15、答案:C
解析:如果不知道什么是数学期望,那么自己百度一下,提高姿势水平。
我们没必要算三分钟的数学期望,我们只需算出一秒内的数学期望,再乘上180即可。那么一秒内,一共就三种情况:没得到球(概率A:19*19/20*20)、得到一个球(概率B:2*1*19/20*20)、得到两个球(概率C:1*1/20*20),所以数学期望是:0*A+1*B+2*C=0.1,所以再乘上180,就得到18.

###单选题总结:今年单选题很多数学计算,所以耗时可能会比较长,但如果数学功底比较好,就会比较熟练,当然也并不是非常难。

#二、多项选择题

1、答案:CD

解析:

NOIP2017提高组预赛详解_C++


这里的表格列得已经非常详细了,补充一下,归并排序最差时间复杂度也为O(nlogn)

2、答案:C
解析:这道题目就非常简单了,简单模拟一下即可。

3、答案:D
解析:见上面表格。

4、答案:BD
解析:​​​Frotran​​ 自己看看这个,我相信除了这一个,其他三个大家应该都是很熟悉的。

5、答案:BD
解析:图灵奖,不解释,大家应该都知道,不知道自行百度。
王选奖,本来我是不知道这个奖的,但是在考试当天上午,我看信息学历史时,看到了王选的介绍,所以,我才知道这个奖项。

###多选题总结:基本靠背……

#三、问题求解

1、答案:3

解析:按如下顺序操作:

NOIP2017提高组预赛详解_NOIP预赛_02


这种题,自己试几下就行了,基本上不会太难。

2、答案:4 9
解析:这题网络流…………,能说超纲了吗?
反正就算对网络流一窍不通,你也差不多能写出4,至于9,如果没学过网络流,就基本上靠天收,博主也没打算看网络流,如果各位想知道正解是什么的话,就另请高明吧!(或者等我在复赛拿到安徽省前30名)

###问题求解总结:超纲超纲超纲……

#四、阅读程序写结果
1、答案:15
解析:就是一个简单的递推题,大家只要自己认真的推算一遍即可,一定要找一张干净的草稿纸,然后有条理的写,这样就能很容易的算出来了。博主第一遍就因为很随便,算出的答案是14,后来写完后面的题,回头找老师又要了几张草稿纸,重算一遍,才算正确。

2、答案:17 24 1 8 15
解析:就是一个幻方。
一眼看透本质后就很简单了,只要自己把幻方填上就行。
这里说一下幻方的定义,就是将1到n*n这些整数填入n*n的方格表,使得每一行、每一列、对角线上的数之和为同一值。
填的方法也很简单,我在小学时就和我的(女)同学探讨过奇数规模的幻方的填写方法(嗯?奇怪的强调……),具体方法如下:

  • 首先将1写在第一行的中间。
  • 之后,按如下方式从小到大依次填写每个数K(K=2,3,…,N*N):
  • 1.若(K−1)在第一行但不在最后一列,则将K填在最后一行,(K−1)所在列的右一列;
  • 2.若(K−1)在最后一列但不在第一行,则将K填在第一列,(K−1)所在行的上一行;
  • 3.若(K−1)在第一行最后一列,则将K填在(K−1)的正下方;
  • 4.若(K−1)既不在第一行,也不在最后一列,如果(K−1)的右上方还未填数,则将K填在(K−1)的右上方,否则将K填在(K−1)的正下方。

这样就能写出一个幻方了,然后输出第一行即可。
还有注意,输入虽然是3,但求的是5*5的幻方。

3、答案:8
解析:一眼看透本质:求逆序对。
然后就很容易的数出来了。
但是是怎么看出来本质的呢?
本题和上一题这样一眼看透本质,有两种方法:1、看算法,是自己熟悉的某个算法,那么恭喜你,你看透了本质。
2、自己先模拟几下,发现规律,得出本质。
这样的话解题就非常简单了。

4、答案:1 3
2017 1
1 321
解析:很明显第一个空是给我们模拟找规律的,其实模拟一下就能发现规律了,规律就是:

  • 求出输入的两个数的最小公倍数
  • 然后用最小公倍数分别除以两个输入的数
  • 如果结果是单数,则输出的是输入的这个数本身
  • 如果结果是偶数,则输出的是1
  • 注意输出顺序
    这样就能顺利地写出结果。

###阅读程序写结果总结:拿到题,不要慌,浏览程序最重要;先模拟,找规律,轻轻松松拿满分。

#五、完善程序
1、答案就不写了,自己看一下。
解析:其实就是我们列竖式做除法的思路,取前几位除以这个数,得到余数保留,输出结果,然后再往后读取。
其实并不是很难。

2、答案略。
解析:没啥难的,注意上下对称结构的提示,几乎送分。

###完善程序总结:理清代码思路,注意上下对称的结构

#结束语
总的来说还可以,卷子难度不是非常大。
考91,不算很好,但也没什么遗憾了。
这里祝愿各位NOIP复赛考生(包括我)能在复赛中取得令自己满意的成绩!!
【鼓掌】【鼓掌】【鼓掌】【鼓掌】