GESP:2026年3月 C++八级 真题及解析

四季读书网 11 0
GESP:2026年3月 C++八级 真题及解析
老师已经为大家准备好电子打印版需要完整电子版文件的朋友,可以拉到文末查看
GESP:2026年3月 C++八级 真题及解析-第1张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第2张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第3张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第4张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第5张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第6张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第7张图片-四季读书网

【答案解析】

1.解释:答案选D。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第8张图片-四季读书网
2.解释:答案选B。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第9张图片-四季读书网
3.解释:答案选B。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第10张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第11张图片-四季读书网
4.解释:答案选C。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第12张图片-四季读书网
5.解释:答案选B。

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第13张图片-四季读书网

相关知识点的复习与拓展:

截至考试当年3月,有关二叉搜索树(BST)性质,简单罗列如下——
● 二叉搜索树的任意节点,左子树所有节点值都小于该节点值,右子树所有节点值都大于该节点值,且左右子树本身也都是二叉搜索树,这是所有解题推导的核心依据。
● 遍历专属特性‌——
二叉搜索树的中序遍历一定是严格递增的有序序列,这是结合中序、先序遍历还原树结构的关键突破口。
● 遍历组合解题技巧‌——
已知二叉搜索树的中序遍历(天然有序),再搭配先序/后序遍历的首/尾元素,就能直接锁定根节点,快速拆分左右子树的节点范围,无需复杂递归就能完成树结构推导。
● 高频考点速记‌——
查找、插入操作的平均时间复杂度为O(logn),极端斜树场景下会退化为O(n);删除有双孩子的节点时,用右子树的最小节点(最左节点)替换即可完成操作。

6.解释:答案选C。

详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第14张图片-四季读书网
7.解释:答案选B。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第15张图片-四季读书网
8.解释:答案选B。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第16张图片-四季读书网
9.解释:答案选B。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第17张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第18张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第19张图片-四季读书网
10.解释:答案选C。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第20张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第21张图片-四季读书网
11.解释:答案选C。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第22张图片-四季读书网

相关知识点的复习与拓展:

Floyd算法的完整更新语句,标准写法示例如下——
if (dist[i][k] != INF && dist[k][j] != INF && dist[i][k] + dist[k][j] < dist[i][j])    dist[i][j] = dist[i][k] + dist[k][j];
12.解释:答案选B。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第23张图片-四季读书网
13.解释:答案选A。
详细解析见下图——
GESP:2026年3月 C++八级 真题及解析-第24张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第25张图片-四季读书网
14.解释:答案选C。

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第26张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第27张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第28张图片-四季读书网

相关知识点的复习与拓展:

截至考试当年3月,有关平面向量的相关知识点,根据大纲要求简单介绍如下——
GESP:2026年3月 C++八级 真题及解析-第29张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第30张图片-四季读书网

15.解释:答案选A。

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第31张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第32张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第33张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第34张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第35张图片-四季读书网

【答案解析】

1.解释:错误。

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第36张图片-四季读书网
2.解释:正确。

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第37张图片-四季读书网

3.解释:正确

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第38张图片-四季读书网

4.解释:错误

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第39张图片-四季读书网

5.解释:错误。

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第40张图片-四季读书网

相关知识点的复习与拓展:

截至考试当年3月,有关十大经典排序算法的特点对比,可以参考下图帮助记忆——

GESP:2026年3月 C++八级 真题及解析-第41张图片-四季读书网
6.解释:错误。

详细解析如下——

GESP:2026年3月 C++八级 真题及解析-第42张图片-四季读书网

7.解释:正确

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第43张图片-四季读书网

8.解释:正确

详细解析见下图——

GESP:2026年3月 C++八级 真题及解析-第44张图片-四季读书网

9.解释:正确。

最小生成树的总边权和是图的一个确定值(所有生成树权值中的最小值)。Kruskal算法和Prim算法都是正确的最小生成树算法,它们最终求出的树虽然边集可能不同,但总权值一定都等于这个最小值。因此该说法正确。

10.解释:错误。

绝大多数常规动态规划场景下二者时间复杂度一致,但在‌状态空间稀疏、依赖关系非连续‌的问题中,二者实际时间复杂度会出现明显差异,以下是典型案例。

案例1:带剪枝的路径计数问题
‌问题背景‌:在网格中从起点到终点的路径计数,仅允许向右/向下移动,且部分格子为障碍物不可通行。
● 自底向上递推‌:必须遍历整个二维网格的所有格子,时间复杂度固定为‌O(m×n)‌,即使大量格子完全不在任何有效路径上,也会被完整计算。
● ‌递归+记忆化搜索‌:仅会递归访问起点到终点的有效路径覆盖到的格子,障碍物区域的子问题完全不会被触发计算,实际执行的状态数远小于m×n,时间复杂度远低于O(m×n)
案例2:稀疏状态的子集选择问题
问题背景‌:给定长度为20的数组,选出和为target的子集数目,数组中大量元素远大于target。
● 自底向上递推‌:必须遍历0到sum(nums)的所有连续状态,时间复杂度为‌O(n×sum(nums))‌,即使大量和值不可能由数组元素组合得到,也会被遍历计算。
● ‌递归+记忆化搜索‌:仅会递归计算能组合出的有效和值,直接跳过所有不可能达到的无效状态,实际计算的状态数远小于sum(nums),时间复杂度显著更低。
案例3:斐波那契数列的极端稀疏场景
问题背景‌:仅计算F(1000),不涉及中间所有无关项的批量计算。
● ‌自底向上递推‌:必须从F(0)开始依次计算F(1)到F(999),完整遍历所有1001个状态,时间复杂度固定为‌O(n)‌
● 递归+记忆化搜索‌:仅会递归计算F(1000)直接依赖的F(999)、F(998)等必要子问题,虽然理论状态数也是n,但如果结合路径剪枝,在部分优化实现中可跳过部分冗余子问题,实际执行步数少于递推的全量遍历。
案例4:复杂状态转移的图上DP问题
‌问题背景‌:在有向无环图(DAG)中求最长路径,图中仅存在少量连通节点。
● 自底向上递推‌:必须按拓扑序遍历图中所有节点,即使大量节点和目标起点完全不连通,也会被纳入遍历流程,时间复杂度为‌O(V+E)‌
● 递归+记忆化搜索‌:从起点出发递归遍历,完全不会访问和起点无连通关系的孤立节点,实际访问的节点和边数远小于V+E,时间复杂度远低于递推实现。
GESP:2026年3月 C++八级 真题及解析-第45张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第46张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第47张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第48张图片-四季读书网

GESP 2026年3月 C++八级 消息查找

#include<bits/stdc++.h>using namespace std;intmain(){    ios::sync_with_stdio(false);  //关闭C++标准流与C标准流的同步机制,直接单独使用独立缓冲区    cin.tie(nullptr), cout.tie(nullptr);//解除cin与cout的绑定关系,cin操作不会再自动刷新cout缓冲区,进一步提升输入速度    int n, q;          // n: 消息总数, q: 询问次数    cin >> n >> q;    // 存储所有引用消息,每个三元组为 (引用目标 r, 消息自身编号 i, 收益 i-r-1)    // 最多只有1000条引用消息,故开固定大小1010    vector<tuple<intintint>> a(1010);    int m = 0;         // 实际引用消息数量    for (int r, i = 1; i <= n; ++i) {        cin >> r;          // 读入 r_i        if (r == 0continue;  // 无引用,忽略        a[++m] = {r, i, i - r - 1};   // 存储三元组:目标,自身编号,收益    }    // pre[i]:对于第 i 条引用消息(按原始消息编号升序存储),    // 在它之前(j < i)且满足 目标 r_j <= 当前目标 r_i 的最大 j。    // 如果不存在则为 0。    vector<intpre(m + 5);    for (int i = 1; i <= m; ++i) {        for (int j = i - 1; j >= 1; --j) {            // get<1>(a[j]) 是消息编号 j,get<0>(a[i]) 是当前引用目标 r_i            // 条件:消息 j 的编号 <= 当前引用目标 r_i,即可以衔接            if (get<1>(a[j]) <= get<0>(a[i])) {                pre[i] = j;                break;            }        }    }    // 处理每个询问    while (q--) {        int l, r;   // 注意输入顺序:第一个是 x(当前消息),第二个是 y(目标消息)                    // 但代码读入为 r, l,即 r 是 x,l 是 y(变量名有误导,实际 l=y, r=x)        cin >> r >> l;   // 输入为 x, y,但赋值给 r, l,故 r = x, l = y        // dp[i]:考虑前 i 条引用消息(按消息编号升序)能获得的最大节省        vector<intdp(m + 5);        for (int i = 1; i <= m; ++i) {            // 不选第 i 条引用            dp[i] = dp[i - 1];            // 获取第 i 条引用的信息            int target = get<0>(a[i]);   // 引用目标 r_i            int msg_id = get<1>(a[i]);   // 消息自身编号 i            int profit = get<2>(a[i]);   // 收益 i - r_i - 1            // 如果该引用不在询问区间 [l, r] 内,则不能选            if (target < l || msg_id > r) continue;            // 选择第 i 条引用,则之前只能选择 pre[i] 及其之前的引用            // 因为 pre[i] 是满足目标 <= target 的最大前驱索引            dp[i] = max(dp[i], dp[pre[i]] + profit);        }        // 基准步数 r - l(从 x 到 y 每次减1)        // 减去最大节省即为最少操作次数        cout << r - l - dp[m] << "\n";    }    return 0;}
代码思路——
GESP:2026年3月 C++八级 真题及解析-第49张图片-四季读书网

GESP:2026年3月 C++八级 真题及解析-第50张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第51张图片-四季读书网

GESP 2026年3月 C++八级 子图最短路

#include<bits/stdc++.h>using namespace std;// 别名:long long 简写为 ll,简化代码书写using ll = long long;// 无穷大:1左移60位,数值远大于单条边最大权1e6,避免路径溢出const ll INF = (1LL << 60);// 题目要求取模模数 1e9const int MOD = 1000000000;intmain(){    // 关闭cin与stdio同步,加速cin输入速度    ios::sync_with_stdio(false);    // 解绑cin与cout,避免cout刷新拖慢cin读取    cin.tie(nullptr);    int n, m;    // 读取结点总数n、边总数m    cin >> n >> m;    // 原图邻接矩阵 g[x][y]:点x到点y的直接边权,初始全部设为无穷大    // 下标1~n对应题目点编号,0下标弃用    vector<vector<ll>> g(n + 1vector<ll>(n + 1, INF));    // 点到自身距离为0    for (int i = 1; i <= n; i++) g[i][i] = 0;    // 循环读取m条无向边    for (int i = 0; i < m; i++) {        int u, v;        ll w;        cin >> u >> v >> w;        // 处理重边:两点间保留权值最小的边        g[u][v] = min(g[u][v], w);        g[v][u] = min(g[v][u], w);    }    // 存储最终累加总和答案,用long long防止累加溢出    ll ans = 0;    // 枚举所有区间左端点 l,对应子图G(l, r)的左边界    for (int l = 1; l <= n; l++) {        // N:当前左端点l固定后,剩余可用点数量 l, l+1 ... n        int N = n - l + 1;        // dis 压缩矩阵:将 [l, n] 的点重新映射为下标0~N-1        // dis[i][j] 等价于原图 g[l+i][l+j],缩小矩阵尺寸减少计算量        vector<vector<ll>> dis(N, vector<ll>(N, INF));        // 初始化压缩后的距离矩阵        for (int i = 0; i < N; i++) {            dis[i][i] = 0// 点到自身距离为0            for (int j = 0; j < N; j++) {                // 把原图对应两点的边权复制到压缩矩阵                dis[i][j] = g[l + i][l + j];            }        }        // r 对应压缩矩阵下标,代表区间右端点 l+r,同时作为Floyd松弛中间点k        // 循环扩展右端点:依次处理区间 [l,l]、[l,l+1] ... [l,n]        for (int r = 0; r < N; r++) {            int k = r; // 当前新增的点 l+r,作为Floyd新的中间中转点            // Floyd-Warshall松弛:用新点k更新所有i,j之间的最短路            for (int i = 0; i < N; i++) {                // i到k不连通,跳过该路径                if (dis[i][k] >= INF / 2continue;                for (int j = 0; j < N; j++) {                    // k到j不连通,跳过该路径                    if (dis[k][j] >= INF / 2continue;                    // 更新i到j的最短路:i->k->j                    dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);                }            }            // 当前有效区间为 [l, l+r],遍历所有无序点对(u,v) u<v            // 因为d(l,r,u,v)和d(l,r,v,u)是两条独立贡献,这里会对称累加            for (int u = 0; u < r; u++) {                for (int v = u + 1; v <= r; v++) {                    // 判断两点连通(距离小于无穷大一半,防止溢出误判)                    if (dis[u][v] < INF / 2) {                        // 累加该路径距离,实时取模防止ans溢出                        ans += dis[u][v] % MOD;                        if (ans >= MOD) ans -= MOD;                    }                }            }        }    }    // 输出总和对1e9取模的结果    cout << ans % MOD << '\n';    return 0;}
代码思路——
GESP:2026年3月 C++八级 真题及解析-第52张图片-四季读书网
GESP:2026年3月 C++八级 真题及解析-第53张图片-四季读书网

课程体系——

GESP:2026年3月 C++八级 真题及解析-第54张图片-四季读书网
需要无水印PDF格式文件,
或者课程体系咨询,
欢迎扫描下面二维码添加好友垂询。
GESP:2026年3月 C++八级 真题及解析-第55张图片-四季读书网

GESP:2026年3月 C++八级 真题及解析-第56张图片-四季读书网

▍ 声明:本文整理自网络,如有侵权,请联系删除。

本公号刊载此文,是出于合法合理地分享和传播信息,扩大大受众范围,促进学术交流,推动共同进步之目的。公众号持有人郑重声明,本文的发布,将严格遵守相关规定和法律法规,不侵犯任意潜在作者的权益,不改变引用原文(若有)的意图和内容。若有来源标注错误或侵犯了您的合法权益,请随时与我们联系协商,联系(QQ):993225721,我们将及时更正、删除。文章若有幸得到转载,首先,公众号持有人感谢转载人为读者阅读提供了有价值的信息和知识,希望文章能够在被转载的平台上得到更广泛的传播和交流;其次,转载人应充分考虑到转载动作本身所可能带来的相应的风险和责任,包括但不限于侵犯知识产权、侵犯他人权益等行为所引起的法律责任,确保本文的合法传播和使用。同时,本人也极其愿意在转载过程中尽力配合转载人了解、关注、规避、消除相关的潜在风险。若转载人有相任何关疑虑,同样欢迎随时与我们联系协商,联系(QQ):993225721。

喜欢您关注我们哦——

抱歉,评论功能暂时关闭!