Logo

2024年6月 GESP C++ 8级

GESP · 8级 · 2024-06

60:00
满分 100
时长 60 分钟
27

2024年6月 GESP C++ 8级认证考试真题(含编程操作题部分)

答题卡 已答 0/27
已答 正确 错误 编程题

单选题(共 15 题,每题 2 分)

1

GESP 活动期间,举办方从获胜者 ABCDE 五个⼈中选出三个⼈排成一队升国旗,其中 A 不能排在队首,请问有多少种排法?

2

$7$ 进制数 $235$ 转换成 $3$ 进制数是( )。

3

$0$,$1$,$2$,$3$,$4$,$5$ 这些数字组成一个三位数,请问没有重复数字的情况下,有多少种组法( )。

4

有 $V$ 个顶点、$E$ 条边的图的深度优先搜索遍历时间复杂度为( )。

5

一对夫妻生男生女的概率相同。已知这对夫妻有两个孩子,其中一个是女孩,另一个是男孩的概率是多少?

6

从 $1$ 到 $2024$ 这 $2024$ 个数中,共有( )个包含数字 $6$ 的数。

7

二进制数 $100.001$ 转换成十进制数是( )。

8

以下函数声明,哪个是符合 C++ 语法的?( )。

9

下面有关 C++ 重载的说法,错误的是( )。

10

小于或等于给定正整数 $n$ 的数中,与 $n$ 互质的数的个数,我们称为欧拉函数,记作 $\varphi(n)$ 。下面说法错误的是( )。

11

已知一棵二叉树有 $10$ 个节点,则其中至多有( )个节点有 $2$ 个子节点。

12

二项展开式的系数,正好满足杨辉三角的规律。当 $n = 5$ 时,二项式展开式中 $x^3$ 项的系数是( )。

13

下面程序的时间复杂度为( )。

bool notPrime[N] = {false};
void sieve() {
    for (int n = 2; n * n < N; n++)
        if (!notPrime[n])
            for (int i = n * n; i < N; i += n)
                notPrime[i] = true;
}
14

下面程序的最差时间复杂度为( )。

int gcd(int m, int n) {
    if (m == 0)
        return n;
    return gcd(n % m, m);
}
15

下面程序的输出为( )。

#include <iostream>
using namespace std;
int main() {
    int cnt = 0;
    for (int x = 0; x <= 10; x++)
        for (int y = 0; y <= 10; y++)
            for (int z = 0; z <= 10; z++)
                if (x + y + z <= 15)
                    cnt++;
    cout << cnt << endl;
    return 0;
}

判断题(共 10 题,每题 2 分)

16

$A$ $B$ $C$ $D$ $E$ 五个小朋友,排成一队跑步,其中 $A$ $B$ 两人必须排在一起,一共有 $48$ 种排法。

17

已知 double 类型的变量 $a$ 和 $b$,则执行语句 a = a + b; b = a - b; a = a - b; 后,变量 $a$ 和 $b$ 的值会互换。

18

一个袋子中有 $3$ 个完全相同的红色小球、$2$ 个完全相同的蓝色小球。每次从中取出 $1$ 个,再放回袋子,这样进行 $3$ 次后,可能的颜色顺序有 $8$ 种。

19

已知 int 类型的变量 $a$ 和 $b$ 中分别存储着一个直角三角形的两条直角边的长度,则斜边的长度可以通过表达式 sqrt(a * a + b * b) 求得。

20

在一个包含 $v$ 个顶点、$e$ 条边的带权连通简单有向图上使用 Dijkstra 算法求最短路径,时间复杂度为 $O(v^2)$,可进一步优化至 $O(e + v \log v)$。

21

在 $n$ 个元素的二叉排序树中查找一个元素,最差情况的时间复杂度是 $O(n)$。

22

C++ 语言中,可以为同一个类定义多个析构函数。

23

使用单链表和使用双向链表,查找元素的时间复杂度相同。

24

为解决哈希函数冲突,可以使用不同的哈希函数为每个表项各建立一个子哈希表,用来管理该表项的所有冲突元素。这些子哈希表一定不会发生冲突。

25

要判断无向图的连通性,在深度优先搜索和广度优先搜索中选择,深度优先的平均时间复杂度更低。

编程操作题(共 2 题,共 50 分)

26
编程操作题 25分

试题名称:最远点对

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

小杨有一棵包含 $n$ 个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。

小杨想知道相距最远的一对不同颜色节点的距离是多少。

输入格式

第一行包含一个正整数 $n$,代表树的节点数。

第二行包含 $n$ 个非负整数 $a_1,a_2,\cdots,a_n$(对于所有的 $1\le i\le n$,均有 $a_i$ 等于 $0$ 或 $1$),其中如果 $a_i=0$,则节点 $i$ 的颜色为白色;如果 $a_i=1$,则节点 $i$ 的颜色为黑色。

之后 $(n-1)$ 行,每行包含两个正整数 $x_i,y_i$,代表存在一条连接节点 $x_i$ 和 $y_i$ 的边。

保证输入的树中存在不同颜色的点。

输出格式

输出一个整数,代表相距最远的一对不同颜色节点的距离。

样例输入 #1

5
0 1 0 1 0
1 2
1 3
3 4
3 5

样例输出 #1

3

说明/提示

样例解释

相距最远的不同颜色的一对节点为节点 $2$ 和 $5$。

数据范围

本题采用捆绑测试。

| 子任务编号 | 得分 | $n$ | $a_i$ | 特殊条件 |
| :--: | :--: | :--: | :--: | :--: |
| $1$ | $30$ | $\le 10^5$ | $0\le a_i\le 1$ | 树的形态为一条链 |
| $2$ | $30$ | $\le 10^3$ | $0\le a_i\le 1$ | |
| $3$ | $40$ | $\le 10^5$ | $0\le a_i\le 1$ | |

对于全部数据,保证有 $1\le n\le 10^5$,$0\le a_i\le 1$。

27
编程操作题 25分

试题名称:空间跳跃

时间限制:1.0 s | 内存限制:500.0 MB

题目描述

小杨在二维空间中有 $n$ 个水平挡板,并且挡板之间彼此不重叠,其中第 $i$ 个挡板处于水平高度 $h_i$,左右端点分别位于 $l_i$ 与 $r_i$。

小杨可以在挡板上左右移动,当小杨移动到右端点时,如果再向右移动会竖直掉落,从而落到下方第一个挡板上,移动到左端点时同理。小杨在挡板上每移动 $1$ 个单位长度会耗费 $1$ 个单位时间,掉落时每掉落 $1$ 个单位高度也会耗费 $1$ 个单位时间。

小杨想知道,从第 $s$ 个挡板上的左端点出发到第 $t$ 个挡板需要耗费的最少时间是多少?

注意:可能无法从第 $s$ 个挡板到达到第 $t$ 个挡板。

输入格式

第一行包含一个正整数 $n$,代表挡板数量。

第二行包含两个正整数 $s,t$,含义如题面所示。

之后 $n$ 行,每行包含三个正整数 $l_i,r_i,h_i$,代表第 $i$ 个挡板的左右端点位置与高度。

输出格式

输出一个整数代表需要耗费的最少时间,如果无法到达则输出 $-1$。

样例输入 #1

3
3 1
5 6 3
3 5 6
1 4 100000

样例输出 #1

100001

说明/提示

样例解释

耗费时间最少的移动方案为,从第 $3$ 个挡板左端点移动到右端点,耗费 $3$ 个单位时间,然后向右移动掉落到第 $2$ 个挡板上,耗费 $100000-6=99994$ 个单位时间,之后再向右移动 $1$ 个单位长度,耗费 $1$ 个单位时间,最后向右移动掉落到第 $1$ 个挡板上,耗费 $3$ 个单位时间。共耗费 $100001$ 个单位时间。

数据范围

子任务编号|数据点占比|$n$|特殊条件
:-:|:-:|:-:|:-:
$1$|$20%$|$\leq 1000$|$l_i=1$
$2$|$40%$|$\leq 1000$|$l_i=i,r_i=i+1$
$3$|$40%$|$\leq 1000$|

对于全部数据,保证有 $1\leq n\leq 1000$,$1\leq l_i\leq r_i\leq 10^5$,$1\leq h_i\leq 10^5$。

已答 0/27