2021 CCF非专业级别软件能力认证第一轮 (CSP-S)提高级 C++答案及解析

试卷下载 浙江S组入围线58.5分,入围人数共954名,有效参加共2321人。

一、单项选择题

1. 答案:A

解析:ls,大纲里要求在 Linux系统终端中使用cd、pwd、ls等命令更改、显示目录路径和查看目录中的文件

2. 答案:B

解析:和的规则为1+1=10,0+1=1,0+0=0,注意进位。

3. 答案:A

解析:栈溢出,上课过程中天天强调。

4. 答案:C

解析:比赛前着重讲了,稳定性指的是对需要排序的数据元素序列,将其按关键字进行排序,若相同关键字元素之间的位置关系,排序前与排序后的相对位置不发生变化,称此排序方法满足稳定性;否则称这种排序方法满足不稳定性。堆的话只分左右孩子,当然不满足。

5. 答案:C

解析:2*n个数找最大值,直接找需要(2*n-1)*2次比较,但是过程中如果他比最大值要大,最小值就不需要比较了,否则最大不用比较。
将n个数分为n对,两个谁大谁小1次,共n次。
接下来n个分别求最大最小,共\((n-1)*2\)次。
总次数为3n*2

6. 答案:C

解析:模拟,带进去算分别是0,1,4,9,5,3,3,5,最后的3和5冲突了,要移动到6和7。

7. 答案:C

解析:又是一道原题,留一个点,其他两两有边,\(9*(9-1)/2=36\)

8. 答案:B

解析:根的节点为1,满足高度为k最多\(2^k -1\)个节点,\(2^{11} -1=2047\)

9. 答案:D

解析:前序遍历为根左右,中序遍历为左根右,根肯定要访问,只有左子树全部没有。

10. 答案:A

解析:模拟就可以,如果知道逆序对的性质直接算下逆序对。

11. 答案:A

解析:模拟的话我认为这个题非常麻烦,可以使用费马小定理。p为质数,满足\(a^{p-1}≡1(mod) p\),那么\(solve(t,n)=5^{t-1}mod n\),即 \(a^{22}≡1(mod) 23\)

12. 答案:C

解析:每次递归分之为2次,n次需要分支,大约就是n个2相乘。

13. 答案:C

解析:这个题是列举不出来的,当前选的苹果可以在之前选or不选的基础上,可能很容易找到递推方程为斐波那契。但是至少选1个,把不选的减去。即求Fib(8)-1

14. 答案:C

解析:利用集合,先计算ab、bc、ac相等的情况个数,再减去abc相等的个数。如果腰的长度是x,底的长度必须小于2x,有1+3+5+7+9+9+9+9+9=61种,每个均有3种排列。等边三角形9个,会被多算两次。即\(3*61-2*9=165\)

15. 答案:B

解析:这个题有层次,可以和数塔一样从后往前推。

二、阅读程序

1.几何相关,没学过高中的三角函数大概这题考的不高

1) 答案:T

解析:t算出来的是整数,没有经过取整。

2) 答案:F

解析:先/2向下取整了,如果是奇数不就没了。

3) 答案:F

解析:sq的参数会被转为int,但是x和y是double啊,有sqrt(2)

4) 答案:T

解析:acos(0.5),高中的你大概接触过三角函数?这不就是PI/3吗,模拟快的。

5) 答案:D

解析:模拟

6) 答案:C

解析:分析单位,肯定是体积了。求出来的球心距离,距离和半径比,分别对应互相包含和不包含。如果搞不懂上面的话包含取min还是懂吧。

2.求最大子段和,slove1通过合并,slove2通过分治。

1) 答案:T

解析:n<=0有判断,正常执行满足。是不是想等的呢,得看程序了。

2) 答案:F

解析:n<=0时正常执行。

3) 答案:F

解析:这个题就要看懂程序了,如果没接触过这个算法,大概很受伤。

4) 答案:B

解析:等比数列求和,不超过n

5) 答案:C

解析:分治很多都是多个log,比如归并。这个程序是\(T(n)=2*T(n/2)+n\),赛前也推过的

6) 答案:B

解析:模拟算下就行,看懂程序很简单。

3.比赛前一天早上出了这一套题,还没来得及给学生练。TZOJ7214: Base64编码,如果了解背景这题就是送的。不了解的话由于有些位运算,可能不太好做,搞了一个table存了些字符,可以理解就是加密解密。

1) 答案:F

解析:decode过程中出现'\n',就不是一行了

2) 答案:T

解析:编码解码就是这样的。

3) 答案:F

解析:得算一下。

4) 答案:B

解析:encode只有一个n的循环,string只有添加字符操作

5) 答案:D(我认为D或BD或全对)

解析:char C语言并没有定义是否unsigned,即ub(undefined behavior)。

6) 答案:D

解析:长度%3=1,两个==,然后模拟那么不一样的就可以了。

三、完善程序

1.搞了个类dij,每次满足条件都会update松弛下。F[i]表示到i需要几个4,vis表示是否算过。

1) 答案:D

解析:初始条件

2) 答案:A

解析:没有算过就算

3) 答案:D

解析:找到F中最小的数松弛

4) 答案:C

解析:没有算过才能操作。但是去掉也可以

2.先处理笛卡尔树,再DFS求出欧拉序,然后求块间的最小值,最后求块内的最小值。难飞了

1) 答案:A

解析:构建笛卡尔树,链接当前节点的左孩子。

2) 答案:D

解析:构建笛卡尔树,当前节点链接到断开位置的右孩子。

3) 答案:A

解析:dfs树上求LCA,这个简单,深度越浅越优。

4) 答案:D

解析:这个有点送,只有一个根据深度来的。

5) 答案:D

解析:这个题要用前一题,我不会

6) 答案:C

解析:89行返回值中,较低位是左边的,要右移,而且和l有关。

posted @ 2021-09-19 18:27  暴力都不会的蒟蒻  阅读(2385)  评论(0编辑  收藏  举报