当前位置: 首页 > news >正文

GESP认证C++编程真题解析 | 202603 八级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


单选题

第1题

某班级有8名男生和6名女生,现要选出3人组成学习小组,要求小组中至少有1名男生和1名女生,则不同的选法共有( )种。

A. 112

B. 168

C. 224

D. 288

【答案】:D

【解析】

分为 1男2女 和 2男1女 两类。

1男2女:\(C_{8}^{1}\times C_{6}^{2}=8\times 15 = 120\)

2男1女:\(C_{8}^{2}\times C_{6}^{1}=28\times 6 = 168\)

合计 288种。

第2题

在杨辉三角中,从第0行开始计数,第10行的所有数之和为( )。

A. 512

B. 1024

C. 2048

D. 4096

【答案】:B

【解析】

第10行数字之和为 \(C_{10}^{0}+C_{10}^{1}+...+C_{10}^{10}\),等价对10个物品,每个考虑选或不选,有 \(2^{10}\) 种选法。

第3题

下列代码实现了快速幂算法,其时间复杂度为( )。

long long fastPow(long long b, long long e, long long mod) {long long result = 1;while (e > 0) {if (e & 1)result = result * b % mod;b = b * b % mod;e >>= 1;}return result;
}

A. \(O(logb)\)

B. \(O(loge)\)

C. \(O(logmod)\)

D. \(O(e)\)

【答案】:B

【解析】

循环次数与 e 的值有关,每次循环时, e>>=1 会使得 e 的值每次减半,至多 \(log e\) 此就可以使得 e 变为 0。

第4题

从5本不同的数学书和4本不同的物理书中选取3本书,要求至少包含1本数学书,则不同的选法有( )种。

A. 60

B. 74

C. 80

D. 84

【答案】:C

【解析】

分为 1数2物、2数1物、3数0物 三类。

1数2物:$C_{5}^{1}\times C_{4}^{2} = 5\times 6 = 30 $

2数1物:\(C_{5}^{2}\times C_{4}^{1}=10\times 4 =40\)

3数0物:\(C_{5}^{3}\times C_{4}^{0}=10\times 1 = 10\)

合计 80 种。

第5题

在二叉搜索树(BST)中,若中序遍历的序列为 {1, 2, 3, 4, 5} ,且先序遍历的第一个序列元素为 3 ,则下列说法正确的是( )。

A. 该树一定是一棵完全二叉树

B. 元素4和5不可能是兄弟节点

C. 元素1所在节点的深度可能大于3(根节点深度为1)

D. 元素2一定是元素1的父节点

【答案】:B

【解析】

由先序遍历首元素可知根节点为3,结合二叉搜索数的“左小右大”性质,以及中序遍历序列。将树划分为含结点1、2的左子树和含结点4、5的右子树,A错误。

右子树只含4和5两个结点,必然是父子层级关系,B错误。

左子树仅含1和2两个结点,最大深度为3,C错误。

1可能是2的父节点,2也可能是1的父节点,D错误。

第6题

在一个有向带权图中,使用Dijkstra算法求单源最短路时,若使用优先队列(小根堆)优化,其时间复杂度为( )。

A. \(O(V^2)\)

B. \(O(V\cdot E)\)

C. \(O((V+E)logV)\)

D. \(O(V^2logV)\)

【答案】:C

【解析】

使用优先队列优化的Dijkstra算法,会在每次从队列中取出距离最小的顶点时,花费 \(O(logV)\) 的复杂度。也会在枚举每条边,更新邻居结点的距离时,进行入队操作,同样花费 \(O(logV)\) 的复杂度。共有 \(V\) 个点和 \(E\) 条边,总复杂度为 \(O((V+E)logV)\)

第7题

对于含 \(n\) 个顶点(\(n\ge 2\))的连通加权有向图,若图中不存在负权环,则任意两点之间的最短路径(简单路径)最多包含( )条边。

A. \(n\)

B. \(n-1\)

C. \(n+1\)

D. 无法确定,取决于图的具体边数

【答案】:B

【解析】

若不存在负权环,则任意两点之间的最短路径必然是简单路径(不包含重复结点)。因此,在含有 \(n\) 个顶点的图中,一条简单路径最多经过所有 \(n\) 个顶点,此时路径上的边数为顶点数减 \(1\),即 \(n-1\) 条。

第8题

在使用Floyd算法求任意两点间最短路径时,时间复杂度为 \(O(V^3)\)。若在某次算法执行前,已经用 Dijkstra 算法正确求出了所有点对的最短路并存入了 dist 数组。如果此时继续对该 dist 数组执行一次完整的 Floyd 算法过程(无任何提前终止),执行完毕后 dist 数组内的值( )。

A. 会发生改变,因为 Floyd 又做了一次松弛

B. 不会发生改变

C. 可能变大,因为未针对已有最短路优化

D. 可能在某些负权图中陷入死循环

【答案】:B

【解析】

若初始的 dist 已经包含了所有点对的最短路径,那么更新操作不会改变任何值,故 dist 数组保持不变。

第9题

关于图论中的最短路径算法,下列说法中严格正确的是( )。

A. Dijkstra 算法能够高效处理包含负权边的有向图。

B. Floyd 算法可以求出任意两点间的最短路径,且允许图中存在负权边(但不能有负权环)。

C. 单源最短路径算法无法用于无向图,无向图只能通过 BFS 求解。

D. Dijkstra 算法的每一步必定从当前未访问的节点中,选取距离起始点最远的节点进行松弛操作。

【答案】:B

【解析】

Dijkstra 算法基于贪心策略,要求所有边权非负,A错误。

单源最短路径算法均可用于无向图,只需将无向边视为两条方向相反的有向边。BFS仅适用于无权图。C错误。

Dijkstra 算法每次选取当前距离起点最近的未访问结点进行松弛,而非最远。

第10题

有6个人排成一排照相,其中甲、乙两人必须相邻,且丙不能站在排头的不同排法有( )种。

A. 120

B. 144

C. 192

D. 240

【答案】:C

【解析】

采用捆绑法,先考虑甲、乙相邻,将两人视为一个整体,内部有2种排列。此时相当于有5个元素进行全排列,总数为 \(5!\times 2=120\times 2 = 240\) 种。

再减去丙在排头的情况:固定丙在第一位,剩余4个位置需排列甲、乙(相邻)和其他3人。选定位置后,整体内部有2种,其余3人全排列有 \(3!=6\) 种,故丙在排头的排法数为 \(4\times 2\times 6 = 48\) 种。

因此满足条件的排法数为 240 - 48 = 192 种。

第11题

下列代码试图实现Floyd算法求所有点对之间的最短路径,横线处应填入( )。

void floyd(int n, int dist[][MAXN]) {for (int k = 0; k < n; k++)for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)if (__________) // 在此处填入选项dist[i][j] = dist[i][k] + dist[k][j];
}

A. dist[i][k] + dist[k][j] < dist[i][j]

B. dist[i][k] != INF && dist[k][j] != INF

C. dist[i][k] != INF && dist[k][j] != INF && dist[i][k] + dist[k][j] < dist[i][j]

D. dist[i][j] == INF

【答案】:C

【解析】

A选项缺少对无穷大的判断,可能导致无效运算,错误。

B选项缺少大小比较,会错误地将所有可达路径都更新,错误。

D选项不符合逻辑,错误。

第12题

用数字 0、1、2、3、4 组成无重复数字的五位偶数,共有( )个。

A. 48

B. 60

C. 72

D. 96

【答案】:B

【解析】

个位为0:首位有4种选择,后三位全排列,共 \(4\times 6 = 24\) 种。

个位为2:首位有3种选择,后三位全排列,共 \(3\times 6 = 18\) 种。

个位为4:同上,也有18种。

总数为 24 + 18 + 18 = 60。

第13题

在一个无向带权图中,若使用 Prim 算法从顶点 0 开始构造最小生成树(边权均为正整数,且 graph[u][v] == 0 表示无边),下列代码中横线处应填入( )。

int prim(vector<vector<int>>& graph, int n) {vector<bool> inMST(n, false);vector<int> minEdge(n, INT_MAX);minEdge[0] = 0;int result = 0;for (int i = 0; i < n; i++) {int u = -1;for (int j = 0; j < n; j++)if (!inMST[j] && (u == -1 || minEdge[j] < minEdge[u]))u = j;inMST[u] = true;result += minEdge[u];for (int v = 0; v < n; v++)if (__________) // 在此处填入选项minEdge[v] = graph[u][v];}return result;
}

A. graph[u][v] && !inMST[v] && graph[u][v] < minEdge[v]

B. !inMST[v] && graph[u][v] < minEdge[v]

C. graph[u][v] > 0 && !inMST[v]

D. !inMST[v] && minEdge[v] > 0

【答案】:A

【解析】

Prim算法中,每次将一个顶点 u 加入生成树后,需要更新其他未加入顶点 v 到当前树的最小边权。更新条件为:

  • v 不在树中;
  • 存在边(u,v)(权值非零);
  • 该边的权值小于当前记录的最小边权 minEdge[v]

选项A完整包含了这3个条件,正确。

第14题

已知三个点 \(A(x_1,y_1),B(x_2,y_2),C(x_3,y_3)\) 在平面直角坐标系中的坐标。下列 C++ 表达式中,在精度误差范围1e-8内能正确计算判断这三个点是三点共线的表达式是( )。

A. (x2-x1)/(y2-y1) == (x3-x1)/(y3-y1)

B. (x2-x1)*(y3-y1)-(x3-x1)*(y2-y1) == 0

C. fabs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)) < 1e-8

D. fabs((x2-x1)/(y2-y1)-(x3-x1)/(y3-y1)) < 1e-8

【答案】:C

【解析】

判断三点共线的常用方法是利用向量叉积:\(\overrightarrow {AB}\times \overrightarrow {AC}=(x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1)\)

若叉积为0,则贡献。但浮点数运算存在精度误差,应使用绝对值小于某个阈值。选C。

第15题

在64位操作系统下(LP64 / LLP64 模型),下面代码的输出结果是( )。

#include <iostream>
using namespace std;int main() {int a[4] = {1, 2, 3, 4};int (*p)[4] = &a;int *q = a;cout << sizeof(a) << " ";cout << sizeof(p) << " ";cout << sizeof(p + 1) << " ";cout << sizeof(q + 1) << " ";cout << (p + 1) - p << " ";cout << (q + 1) - q << endl;
}

A. 16 8 8 8 1 1

B. 16 8 16 8 1 1

C. 16 8 8 4 4 1

D. 16 8 8 8 4 1

【答案】:A

【解析】

在64位系统下,指针大小为8字节,int大小为4字节。

  • sizeof(a):数组a有4个int,总大小为 \(4\times 4 = 16\) 字节。
  • sizeof(p):p是指向数组的指针,指针本身大小有8字节。
  • sizeof(q+1):q是int,q+1仍是int,指针表达式结果为指针,大小为8字节。代码中该语句出现两次,故两个输出均为8。
  • (p+1)-p:p指向int[4]类型,指针加减以数组大小为步长。p+1指向下一个int[4]数组,两者相差一个数组,故指针差值为1(元素个数)。
  • (q+1)-q:q是int*,q+1指向下一个int,差值为1。

因此输出序列为:16 8 8 8 1 1,对应选项A。

判断题

第1题

在C++中,若结构体中包含一个 static 成员变量,则该变量的存储空间属于结构体对象的一部分。

A. 正确

B. 错误

【答案】:B

【解析】

在C++中,类的静态成员变量(包括结构体)不属于任何单个对象,而是属于类本身,所有对象共享同一份静态成员。静态成员变量的存储空间位于静态存储区,并不包含在对象的内存布局中。因此,它不属于结构体对象的一部分。

第2题

对于任意正整数 ,二项式 \((a+b)^n\) 展开式中各项的二项式系数之和等于 \(2^n\)

A. 正确

B. 错误

【答案】:A

【解析】

根据二项式定理,\((a+b)^n=\sum_{k=0}^nC_n^ka^{n-k}b^k\),其中二项式系数为 \(C_n^k\)。令 \(a = b = 1\),则 \((1+1)^n=2^n=\sum_{k=0}^nC_n^k\),即各项二项式系数之和等于 \(2^n\),该结论对任意正整数 \(n\) 成立。

第3题

在C++中,若函数参数类型为 const int & ,则该参数既可以绑定左值,也可以绑定右值。

A. 正确

B. 错误

【答案】:A

【解析】

在C++中,const 左值引用具有特殊的性质:它可以班定到右值,并延长其生命周期。因此,const int & 类型的参数既可以接受左值实参,也能接受右值实参。

第4题

若一个无向图的最小生成树唯一,则图中所有边权必定各不相同。

A. 正确

B. 错误

【答案】:B

【解析】

构造出一个边权全部相同的树,即可保证生成树唯一且各边权完全相同。

第5题

使用快速排序对 \(n\) 个元素进行排序时,无论最好、最坏还是平均情况,时间复杂度均为 \(O(nlogn)\)

A. 正确

B. 错误

【答案】:B

【解析】

快速排序的平均时间复杂度为 \(O(nlogn)\),但最坏情况下时间复杂度会退化为 \(O(n^2)\)

第6题

若一个图中所有顶点的度数为偶数,则一定存在欧拉回路。

A. 正确

B. 错误

【答案】:B

【解析】

欧拉回路需要满足以下条件:

  • 图是连通的。
  • 所有顶点的度数为偶数。

题目并未说明图是连通的,不能直接判定。

第7题

使用倍增法预处理区间最值问题时,预处理的时间复杂度为 \(O(nlogn)\),查询的时间复杂度为 \(O(1)\)

A. 正确

B. 错误

【答案】:A

【解析】

倍增法用于解决区间最值查询问题时,预处理阶段需要计算每个长度为 2^k 的区间的最值,时间复杂度为 \(O(nlogn)\)。查询时通过合并两个重叠区间得到结果,可在 \(O(1)\) 时间内完成。

第8题

如果将一个连通无向图 \(G_1\) 中所有边的权值都统一增加同一个正整数常数 \(C\),形成图 \(G_2\)。则 \(G_1\) 的最小生成树中每条边在 \(G_2\) 中对应的边组成的树,一定是 \(G_2\) 的最小生成树。

A. 正确

B. 错误

【答案】:A

【解析】

所有边都权值增加相同的常数 \(C\) 后,所有生成树的权值相对大小保持不变,因此原最小生成树在 \(G_2\) 中仍然是最小生成树。

第9题

在图论算法中,Kruskal算法和Prim算法都可以用来求解最小生成树,且这两者的贪心策略无论在任何连通无向图上求得的最小生成树总边权和必定相同。

A. 正确

B. 错误

【答案】:A

【解析】

两个算法求出来的最小生成树的结构可能不一样,但是最终的边权总和一定是相同的。

第10题

在动态规划问题中,“状态转移方程+递推”和“递归+记忆化搜索”通常是解决同一问题的两种不同实现方式,它们的时间复杂度总是相同的。

A. 正确

B. 错误

【答案】:B

【解析】

同一问题可能存在不同的状态设计或者是状态转移方程,如果两者使用的转移方式不一致,那么时间复杂度可能也不一样。

编程题

题解:洛谷 P15804 [GESP202603 八级] 消息查找

http://www.jsqmd.com/news/782104/

相关文章:

  • PUBG绝地求生罗技鼠标宏压枪脚本:告别手抖,三分钟实现精准射击
  • 2026年净化工程公司选购推荐,厦门科锐特净化值得选 - myqiye
  • 2026 长三角有实力的十大铸铝门厂家精选推荐(制造业 / ToB 高客单专属・实战案例 + 数据佐证) - 呼呼拉呼
  • ggplot2中的回归线与最佳拟合线
  • XHS-Downloader:小红书无水印下载工具终极指南,轻松获取高质量内容
  • SoC原型验证工程师日常:除了FPGA,我们还在用哪些“天价”硬件平台?
  • 追随 Netflix 脚步,亚马逊 Prime Video 加入垂直视频流,“片段”功能今夏全面上线
  • IDEA 2026.1 良心发现:AI 建议免费无限用了!
  • 高效跨平台解决方案:WorkshopDL免Steam创意工坊资源下载完整指南
  • 千年舟建材家居台州官方联系方式 合作电话 官方网站 官网 - 资讯焦点
  • 多智能体社会模拟:从LLM智能体到复杂社会系统构建
  • pywencai技术解析:同花顺问财数据获取的Python实现深度剖析
  • 2026年净化工程智能化发展趋势,选购品牌的技巧 - myqiye
  • 魔兽争霸3优化终极指南:5分钟解决闪退、卡顿、兼容性问题
  • 基于LangChain与本地大模型构建私有知识库问答系统实践
  • 热门的茶馆哪家强 - 速递信息
  • 齐家典尚・三多装饰官方联系方式 合作电话 官方网站 官网 - 资讯焦点
  • 2026年易更换滤芯的ffu推荐,靠谱生产厂家排名 - myqiye
  • 【YOLO目标检测全栈实战专栏】04 模型压缩与量化:把YOLOv8塞进边缘设备的“瘦身秘籍”
  • 口碑好的商标转让源头厂家推荐 - 速递信息
  • AI代码可读性优化:智能体如何提升AI生成代码的语义化命名与注释
  • 齐齐哈尔大学考研辅导班推荐:排行榜单与选哪家好评测 - michalwang
  • 从PyTorch到CoreML:深度模型转换实战
  • Windows系统RacEngn.dll文件丢失无法启动程序解决
  • RICH探测器与粒子识别技术解析
  • 高性价比长治旧房改造的装修公司推荐 - 品牌企业推荐师(官方)
  • 免费AIGC检测+精准降AI 论文通顺度拉满工具推荐
  • SAP概述
  • 2026年|亲测有效!8款降AI率工具推荐(含免费降AI率版),论文降AIGC神器 - 降AI实验室
  • PyTorch 新开源的 torchforge 为什么一上来就不是“轻量 GRPO 脚手架”?想跑 agentic RL,先看清这 3 层基础设施边界