NOIP 2015 普及组 初赛
疑难点 学习 感悟。
本份试卷本人得分93,两处错误,一错在二、1.题,眼花了,多数了个数据3241;二错在四、2.题(5)空,该空写成rbound=mid-1,这个错误在考试中是改正不了的,这是由本人解题方法决定的。也就是说该份试卷本人的极限是98。
一、
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个结点的二叉树。如下图所示:
第h层从右向左连续缺若干节点,则这个二叉树就是完全二叉树。
如下图所示:
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个结点的二叉树。如下图所示:
第h层从右向左连续缺若干节点,则这个二叉树就是完全二叉树。
如下图所示:
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)空,一开始猜反了,但在模拟数据过程中,很快纠正。