信奥刷题站
GESP 认证 7级2023-12

2023年12月 GESP C++ 7级

题量
27 题
客观题
25 题
建议时长
60 分钟
卷面总分
100 分

2023年12月 GESP C++ 7级认证考试真题(含编程操作题部分)

开始整卷模拟计时作答 · 交卷即时判分 · 错题自动进错题本(需登录)2 道编程大题:在线只判客观题,编程题请自行前往洛谷等 OJ 提交验证

// questions

题目预览

1
单选题2

定义变量 double x,如果下面代码输入为 100100100,输出最接近( )。

A

000

B

−5-55

C

−8-88

D

888

2
单选题2

对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数的为( )。

A
B
C
D
3
单选题2

下面代码可以用来求最长上升子序列(LIS)的长度,如果输入是:555 111 777 333 555 999,则输出是( )。

A

999 777 555 111 111 999

B

111 222 222 333 444 444

C

111 333 555 777 999 999

D

111 111 111 111 111 111

4
单选题2

C++ 语言中,下列关于关键字 static 的描述不正确的是( )。

A

可以修饰类的成员函数。

B

常量静态成员可以在类外进行初始化。

C

aaa 是类 A 常量静态成员,则 aaa 的地址都可以访问且唯一。

D

静态全局对象一定在 main 函数调用前完成初始化,执行完 main 函数后被析构。

5
单选题2

GGG 是一个非连通无向图,共有 282828 条边,则该图至少有( )个顶点。

A

666

B

777

C

888

D

999

6
单选题2

哈希表长 313131,按照下面的程序依次输入 444 171717 282828 303030 444,则最后的 444 存入哪个位置?( )

A

333

B

444

C

555

D

666

7
单选题2

某二叉树 TTT 的先序遍历序列为:{A B D F C E G H},中序遍历序列为:{B F D A G E H C},则下列说法中正确的是( )。

A

TTT 的度为 111

B

TTT 的高为 444

C

TTT444 个叶节点

D

以上说法都不对

8
单选题2

下面代码段可以求两个字符串 s1s1s1s2s2s2 的最长公共子串(LCS),下列相关描述不正确的是( )。

A

代码的时间复杂度为 O(n2)O(n^2)O(n2)

B

代码的空间复杂度为 O(n2)O(n^2)O(n2)

C

空间复杂度已经最优

D

采用了动态规划求解

9
单选题2

图的广度优先搜索中既要维护一个标志数组标志已访问的图的结点,还需哪种结构存放结点以实现遍历?( )

A

双向栈

B

队列

C

哈希表

D

10
单选题2

对关键字序列 {444444363636232323353535525252737373909090585858} 建立哈希表,哈希函数为 h(k)=k%7h(k) = k \% 7h(k)=k%7,执行下面的 Insert 函数,则等概率情况下的平均成功查找长度(即查找成功时的关键字比较次数的均值)为( )。

A

7/87/87/8

B

111

C

1.51.51.5

D

222

11
单选题2

学生在读期间所上的某些课程中需要先上其他的课程,所有课程和课程间的先修关系构成一个有向图 GGG,有向边 <U,V><U, V><U,V> 表示课程 UUU 是课程 VVV 的先修课,则要找到某门课程 CCC 的全部先修课下面哪种方法不可行?( )

A

BFS 搜索

B

DFS 搜索

C

DFS + BFS

D

动态规划

12
单选题2

一棵完全二叉树有 202320232023 个结点,则叶结点有多少个?( )

A

102410241024

B

101310131013

C

101210121012

D

101110111011

13
单选题2

用下面的邻接表结构保存一个有向图 GGGInfoTypeVertexType 是定义好的类。设 GGGnnn 个顶点、 eee 条弧,则求图 GGG 中某个顶点 uuu (其顶点序号为 kkk )的度的算法复杂度是( )。

A
B
C
D
14
单选题2

给定一个简单有向图 GGG ,判断其中是否存在环路的下列说法哪个最准确?( )

A

BFS 更快

B

DFS 更快

C

BFS 和 DFS 一样快

D

不确定

15
单选题2

从顶点 v1v_1v1 开始遍历下图 GGG 得到顶点访问序列,在下面所给的 444 个序列中符合广度优先的序列有几个?( ) {v1v_1v1 v2v_2v2 v3v_3v3 v4v_4v4 v5v_5v5} ,{v1v_1v1 v2v_2v2 v4v_4v4 v3v_3v3 v5v_5v5},{v1v_1v1 v4v_4v4 v2v_2v2 v3v_3v3 v5v_5v5},{v1v_1v1 v2v_2v2 v4v_4v4 v5v_5v5 v3v_3v3}

A

444

B

333

C

222

D

111

16
判断题2

小杨这学期准备参加 GESP 的 7 级考试,其中有关于三角函数的内容,他能够通过下面的代码找到结束循环的角度值。( )

17
判断题2

小杨在开发画笔刷小程序(applet),操作之一是选中黄颜色,然后在下面的左图的中间区域双击后,就变成了右图。这个操作可以用图的泛洪算法来实现。( )

18
判断题2

假设一棵完全二叉树共有 NNN 个节点,则树的深度为 ⌊log⁡2N⌋+1\lfloor \log_2 N \rfloor + 1log2N+1。( )

19
判断题2

给定一个数字序列 A1A_1A1A2A_2A2A3A_3A3,...,AnA_nAn,要求 iiijjj1≤i≤j≤n1 \leq i \leq j \leq n1ijn),使 Ai+⋯+AjA_i + \dots + A_jAi++Aj 最大,可以使用动态规划方法来求解。( )

20
判断题2

若变量 xxxdouble 类型正数,则 log(exp(x)) > log10(x)。( )

21
判断题2

简单有向图有 nnn 个顶点和 eee 条弧,可以用邻接矩阵或邻接表来存储,二者求节点 uuu 的度的时间复杂度一样。( )

22
判断题2

某个哈希表键值 xxx 为整数,为其定义哈希函数 H(x)=x%pH(x) = x \% pH(x)=x%p,则 ppp 选择素数时不会产生冲突。( )

23
判断题2

动态规划只要推导出状态转移方程,就可以写出递归程序来求出最优解。( )

24
判断题2

广度优先搜索(BFS)能够判断图是否连通。( )

25
判断题2

在 C++ 中,如果定义了构造函数,则创建对象时先执行完缺省的构造函数,再执行这个定义的构造函数。()

GESP 编程操作题
26
编程题25

试题名称:商品交易

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

题目描述

市场上共有 NNN 种商品,编号从 000N−1N-1N1 ,其中,第 iii 种商品价值 viv_ivi 元。

现在共有 MMM 个商人,编号从 000M−1M-1M1 。在第 jjj 个商人这,你可以使用你手上的第 xjx_jxj 种商品交换商人手上的第 yjy_jyj 种商品。每个商人都会按照商品价值进行交易,具体来说,如果 vxj>vyjv_{x_j}>v_{y_j}vxj>vyj,他将会付给你 vxj−vyjv_{x_j}-v_{y_j}vxjvyj元钱;否则,那么你需要付给商人 vyj−vxjv_{y_j}-v_{x_j}vyjvxj 元钱。除此之外,每次交易商人还会收取 111 元作为手续费,不论交易商品的价值孰高孰低。

你现在拥有商品 aaa ,并希望通过一些交换来获得商品 bbb 。请问你至少要花费多少钱?(当然,这个最小花费也可能是负数,这表示你可以在完成目标的同时赚取一些钱。)

输入格式

第一行四个整数 N,M,a,bN , M , a , bN,M,a,b,分别表示商品的数量、商人的数量、你持有的商品以及你希望获得的商品。保证 0≤a,b<N0 \le a,b < N0a,b<N ,保证 a≠ba \ne ba=b

第二行 NNN 个用单个空格隔开的正整数 v0,v1,…,vN−1v_0,v_1,…,v_{N-1}v0,v1,,vN1 ,依次表示每种商品的价值。保证 1≤vi≤1091≤v_i≤10^91vi109

接下来 MMM 行,每行两个整数 xj,yjx_j,y_jxj,yj ,表示在第 jjj 个商人这,你可以使用第 xjx_jxj 种商品交换第 yjy_jyj 种商品。保证 0≤xj,yj<N0≤x_j,y_j<N0xj,yj<N,保证 xj≠yjx_j≠y_jxj=yj

输出格式

输出一行一个整数,表示最少的花费。特别地,如果无法通过交换换取商品 bbb ,请输出 No solution

样例输入 #1

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

样例输出 #1

5

样例输入 #2

3 3 0 2
100 2 4
0 1
1 2
0 2

样例输出 #2

-95

样例输入 #3

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

样例输出 #3

No solution

说明/提示

数据范围

对于 30% 的测试点,保证 N≤10N ≤ 10N10M≤20M ≤ 20M20

对于 70% 的测试点,保证 N≤103N ≤10^3N103M≤104M≤10^4M104

对于 100% 的测试点,保证 N≤105N≤10^5N105M≤2×105M≤2×10^5M2×105

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)
27
编程题25

试题名称:纸牌游戏

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

题目描述

你和小杨在玩一个纸牌游戏。

你和小杨各有 333 张牌,分别是 0、1、20、1、2012。你们要进行 NNN 轮游戏,每轮游戏双方都要出一张牌,并按 111 战胜 000222 战胜 111000 战胜 222 的规则决出胜负。第 iii 轮的胜者可以获得 2×ai2 \times a_i2×ai 分,败者不得分,如果双方出牌相同,则算平局,二人都可获得 aia_iai(i=1,2,⋯ ,N)(i=1,2,\cdots,N)(i=1,2,,N)

玩了一会后,你们觉得这样太过于单调,于是双方给自己制定了不同的新规则。小杨会在整局游戏开始前确定自己全部 nnn 轮的出牌,并将他的全部计划告诉你;而你从第 222 轮开始,要么继续出上一轮出的牌,要么记一次“换牌”。游戏结束时,你换了 ttt 次牌,就要额外扣 b1+⋯+btb_1+\cdots+b_tb1++bt 分。

请计算出你最多能获得多少分。

输入格式

第一行一个整数 NNN,表示游戏轮数。

第二行 NNN 个用单个空格隔开的非负整数 a1,⋯ ,aNa_1,\cdots,a_Na1,,aN,意义见题目描述。

第三行 N−1N-1N1 个用单个空格隔开的非负整数 b1,⋯ ,bN−1b_1,\cdots,b_{N-1}b1,,bN1,表示换牌的罚分,具体含义见题目描述。由于游戏进行 NNN 轮,所以你至多可以换 N−1N-1N1 次牌。

第四行 NNN 个用单个空格隔开的整数 c1,⋯ ,cNc_1,\cdots,c_Nc1,,cN,依次表示小杨从第 111 轮至第 NNN 轮出的牌。保证 ci∈0,1,2c _i\in{0,1,2}ci0,1,2

输出格式

一行一个整数,表示你最多获得的分数。

样例输入 #1

4
1 2 10 100
1 100 1
1 1 2 0

样例输出 #1

219

样例输入 #2

6
3 7 2 8 9 4
1 3 9 27 81
0 1 2 1 2 0

样例输出 #2

56

说明/提示

样例解释 1

你可以第 111 轮出 000,并在第 2,32,32,3 轮保持不变,如此输掉第 1,21,21,2 轮,但在第 333 轮中取胜,获得 2×10=202×10=202×10=20 分;

随后,你可以在第 444 轮中以扣 111 分为代价改出 111 ,并在第 444 轮中取得胜利,获得 2×100=2002×100=2002×100=200 分。

如此,你可以获得最高的总分 20+200−1=21920+200-1=21920+2001=219

数据范围

对于 30%30\%30% 的测试点,保证 N≤15N\le15N15

对于 60%60\%60% 的测试点,保证 N≤100N\le100N100

对于所有测试点,保证 N≤1,000N \le 1,000N1,000;保证 0≤ai,bi≤1060 \le a_i,b_i \le 10^60ai,bi106

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)