天天看点

NOIP 2015 普及组 初赛

NOIP 2015 普及组 初赛

疑难点 学习 感悟。

本份试卷本人得分93,两处错误,一错在二、1.题,眼花了,多数了个数据3241;二错在四、2.题(5)空,该空写成rbound=mid-1,这个错误在考试中是改正不了的,这是由本人解题方法决定的。也就是说该份试卷本人的极限是98。

NOIP 2015 普及组 初赛
NOIP 2015 普及组 初赛
NOIP 2015 普及组 初赛

一、

1.

C.1000*1000字节 是硬件商,软件商的做法。

D.1024*1024字节 来自教科书,也就是来源于计算机的二进制表达。

权衡之下选D

7.

示例如下(来自自个的理解):

101.101 十进制 转十进制1*10^2+0*10^1+1*10^0+1*10^-1+0*10^-2+1*10^-3

101.101 二进制 转十进制1*2^2+0*2^1+1*2^0+1*2^-1+0*2^-2+1*2^-3

101.101 八进制 转十进制1*8^2+0*8^1+1*8^0+1*8^-1+0*8^-2+1*8^-3

101.101 十六进制 转十进制1*16^2+0*16^1+1*16^0+1*16^-1+0*16^-2+1*16^-3

以十进制为中介

0.1=1*2^-1=0.5

x*16^-1=0.5 => x=8

故答案为A

12.

n个顶点的树,边数为n-1

故答案为6-1=5,选B

13.

一直对D答案比较困惑,实际跨越的空间肯定不与个数成正比,不过,实际占有的空间与个数成正比,最终确定不选D,因A明显错误,只有数组才能做到随机访问。故选A

16.

(来自《算法竞赛入门经典》P155)

用递归定义 二叉树T 的先序遍历、中序遍历、后序遍历:

先序遍历 PreOrder(T)=T的根节点+PreOrder(T的左子树)+PreOrder(T的右子树)

中序遍历 InOrder(T)=InOrder(T的左子树)+T的根节点+InOrder(T的右子树)

后序遍历 PostOrder(T)=PostOrder(T的左子树)+PostOrder(T的右子树)+T的根节点

通过举例:一个根节点与一个只有一个节点的左子树; 一个根节点与一个只有一个节点的右子树。本题很快就能做完。

17.

(来自《啊哈!算法》P184)

满二叉树的严格定义是一棵深度为h且有2^h-1个结点的二叉树。如下图所示:

NOIP 2015 普及组 初赛

完全二叉树严格定义:若设二叉树的高度为h,除第h层外,其他各层(1-h-1)的结点数都达到最大个数,

第h层从右向左连续缺若干节点,则这个二叉树就是完全二叉树。

如下图所示:

NOIP 2015 普及组 初赛

2^n-1=63

n=6

故为B

19.

T(n)=T(n-1)+n

推导:

T(n)=T(n-2)+n-1+n

T(n)=T(n-3)+n-2+n-1+n

T(n)=T(n-4)+n-3+n-2+n-1+n

......

T(n)=T(1)+2+......+n-3+n-2+n-1+n

T(n)=T(0)+1+2+......+n-3+n-2+n-1+n

T(n)=1+1+2+......+n-3+n-2+n-1+n

T(n)=1+(1+n)*n/2

T(n)=(n^2+n+2)/2

故T(n)=O(n^2)

故选D

二、

1.

枚举24种组合,选出符合条件的有9种,如下:

2143

2341

2413

3142

3412

3421

4123

4312

4321

2.

猜测应该是完全二叉树,满二叉树到完全二叉树,每少两个叶节点就多出一个叶结点。

(来自《啊哈!算法》P184)

满二叉树的严格定义是一棵深度为h且有2^h-1个结点的二叉树。如下图所示:

NOIP 2015 普及组 初赛

完全二叉树严格定义:若设二叉树的高度为h,除第h层外,其他各层(1-h-1)的结点数都达到最大个数,

第h层从右向左连续缺若干节点,则这个二叉树就是完全二叉树。

如下图所示:

NOIP 2015 普及组 初赛

满二叉树:

2^11-1=2047

叶节点个数2^10=1024

完全二叉数:

2047-2015=32,少了32个叶节点,应多出16个叶节点

故叶节点数:

1024-32+16=1008

三、

3.

统计小写字母个数。

4.

(来自《算法竞赛入门经典》P66)

函数的形参和在函数内声明的变量都是该函数的局部变量。无法访问其他函数的局部变量。

局部变量的存储空间是临时分配的,函数执行完毕时,局部变量的空间将被释放,其中的值无法保留到下次使用。

题中a的变化没有影响到p1,原因如上所示,故c1值不变。

题中*a影响的是p2指向的内存块,即c2里的值,故(*a)++对应的c2值要改变。

四、

1.

a.很快识别出dayNum数组中的数据是12个月的天数。

b.将2015年1月的数据代入该程序,进行模拟,第一步写出(3)空,第二步写出(4)空,第三步写出(1)空,第四步写出(5)空,最难写的是(2)空,写该空时尝试了2015年2月的数据。

2.

a.程序未完全看懂,代入数据0 3 9进行程序模拟。

b.第一步完成(1),完全能猜出,第二步完成(5)空,采用对称性rbound=mid-1,虽然是错的,此空的错误,本人无法在考试时纠正(正确答案rbound=mid),但不影响其它空的填写。

c.第三步完成(4)空,第四步完成(2)空,因count需要初始化,所以(2)空还是简单。

d.第五步完成(3)空,一开始猜反了,但在模拟数据过程中,很快纠正。