2024年06月CCF-GESP编程能力等级认证C++编程八级真题解析

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。

一、单选题(每题 2 分,共 30 分)

第 1 题

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

答案:B

第 2 题

7进制数235转换成3进制数是( )。
A. 11121
B. 11122
C. 11211
D. 11112

答案:A

第 3 题

0,1,2,3,4,5这些数字组成一个三位数,请问没有重复数字的情况下,有多少种组法( )。
A. 180
B. 120
C. 80
D. 100

答案:D

第 4 题

有V个顶点、E条边的图的深度优先搜索遍历时间复杂度为( )。
A. O ( V ) O(V) O(V)
B. O ( E ) O(E) O(E)
C. O ( V + E ) O(V+E) O(V+E)
D. O ( l o g ( V + E ) ) O(log(V+E)) O(log(V+E))

答案:C

第 5 题

一对夫妻生男生女的概率相同。已知这对夫妻有两个孩子,其中一个是女孩,另一个是男孩的概率是多少?
A. 2 3 \frac{2}{3} 32
B. 1 4 \frac{1}{4} 41
C. 1 2 \frac{1}{2} 21
D. 1 3 \frac{1}{3} 31

答案:C

第 6 题

从1到2024这2024个数中,共有( )个包含数字6的数。
A. 544
B. 546
C. 564
D. 602

答案:A

第 7 题

二进制数 100.001 转换成十进制数是( )。
A. 4.25
B. 4.125
C. 4.5
D. 4.75

答案:B

第 8 题

以下函数声明,哪个是符合C++语法的?( )。
A. void BubbleSort(char a[][], int n);
B. void BubbleSort(char a[][20], int n);
C. void BubbleSort(char a[10][], int n);
D. void BubbleSort(char[,] a, int n);

答案:B

第 9 题

下面有关C++重载的说法,错误的是( )。
A. 两个参数个数不同的函数可以重名。
B. 两个参数类型不同的函数可以重名。
C. 两个类的方法可以重名。
D. 所有C++运算符均可以重载。

答案:D

第 10 题

小于或等于给定正整数n的数中,与n互质的数的个数,我们称为欧拉函数,记作 ϕ ( n ) \phi(n) ϕ(n)。下面说法错误的是( )。
A. 如果n是质数,那么 ϕ ( n ) = n − 1 \phi(n)=n-1 ϕ(n)=n1
B. 两个质数一定是互质数。
C. 两个相邻的数一定是互质数。
D. 相邻的两个质数不一定是互质数。

答案:D

第 11 题

已知一棵二叉树有10个节点,则其中至多有( )个节点有2个子节点。
A. 4
B. 5
C. 6
D. 3

答案:A

第 12 题

二项展开式 ( x + y ) n = x n + n x ˙ n − 1 y + n ( n − 1 ) 2 x ˙ n − 2 y 2 + . . . + y n (x+y)^n=x^n+n\dot{x}^{n-1}y+\frac{n(n-1)}{2}\dot{x}^{n-2}y^2+...+y^n (x+y)n=xn+nx˙n1y+2n(n1)x˙n2y2+...+yn 的系数,正好满足杨辉三角的规律。当时,二项式展开式中 x y 9 xy^9 xy9 项的系数是( )。
A. 5
B. 9
C. 10
D. 8

答案:C

第 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;
}

A. O ( N ) O(N) O(N)
B. O ( N × l o g N ) O(N×logN) O(N×logN)
C. O ( N × l o g l o g N ) O(N×loglogN) O(N×loglogN)
D. O ( N 2 ) O(N^2) O(N2)

答案:C

第 14 题

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

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

A. O ( n ) O(\sqrt{n}) O(n )
B. O ( l o g ( n ) ) O(log(n)) O(log(n))
C. O ( n ) O(n) O(n)
D. O ( 1 ) O(1) O(1)

答案:B

第 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;
}

A. 90
B. 91
C. 710
D. 711

答案:D

二、判断题(每题 2 分,共 20 分)

第 16 题

ABCDE五个小朋友,排成一队跑步,其中AB两人必须排在一起,一共有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(v^2) O(v2),可进一步优化至 O ( e + v l o g ( v ) ) O(e+vlog(v)) O(e+vlog(v))

答案:正确

第 21 题

N N N 个元素的二叉排序树中查找一个元素,最差情况的时间复杂度是 O ( l o g N ) O(logN) O(logN)

答案:错误

第 22 题

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

答案:错误

第 23 题

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

答案:正确

第 24 题

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

答案:错误

第 25 题

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

答案:错误

三、编程题(每题 25 分,共 50 分)

第 26 题

试题名称:最远点对
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一棵包含 n n n 个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。
小杨想知道相距最远的一对不同颜色节点的距离是多少。
输入格式
第一行包含一个正整数 n n n,代表树的节点数。
第二行包含 n n n 个非负整数 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an(对于所有的 1 ≤ i ≤ n 1≤i≤n 1in,均有 a i a_i ai 等于 0 或 1),其中如果 a i = 0 a_i=0 ai=0,则节点 i i i 的颜色为白色;如果 a i = 1 a_i=1 ai=1,则节点 i i i 的颜色为黑色。
之后 n − 1 n-1 n1 行,每行包含两个正整数 x i , y i x_i,y_i xi,yi,代表存在一条连接节点 x i x_i xi y i y_i yi 的边。
保证输入的树中存在不同颜色的点。
输出格式
输出一个整数,代表相距最远的一对不同颜色节点的距离。
样例1

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

样例解释
相距最远的不同颜色的一对节点为节点 2 和 5。
数据范围
在这里插入图片描述

对于全部数据,保证有 1 ≤ n ≤ 1 0 5 , 0 ≤ a i ≤ 1 1≤n≤10^5,0≤a_i≤1 1n105,0ai1

参考程序

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
vector<int> g[N];
int col[N];
int n;
int dep[N],far[N][2];
int ans;
void dfs(int x,int fa){dep[x]=dep[fa]+1;far[x][col[x]]=dep[x];for(int i:g[x]){if(i!=fa){dfs(i,x);for(int j=0;j<2;j++){if(far[x][j]!=-1&&far[i][j^1]!=-1){ans = max(ans,far[x][j]-dep[x]+far[i][j^1]-dep[x]);}}for(int j=0;j<2;j++){far[x][j]=max(far[x][j],far[i][j]);}}}ans = max(ans,far[x][col[x]^1]-dep[x]);
}
int main(){int n;cin>>n;memset(far,-1,sizeof far);for(int i=1;i<=n;i++){cin>>col[i];}for(int i=1;i<n;i++){int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dfs(1,0);cout<<ans<<"\n";
}

第 27 题

试题名称:空间跳跃
时间限制:1.0 s
内存限制:512.0 MB

题面描述
小杨在二维空间中有 n n n 个水平挡板,并且挡板之间彼此不重叠,其中第 i i i 个挡板处于水平高度 h i h_i hi,左右端点分别位于 l i l_i li r i r_i ri
小杨可以在挡板上左右移动,当小杨移动到右端点时,如果再向右移动会竖直掉落,从而落到下方第一个挡板上,移动到左端点时同理。小杨在挡板上每移动 1 1 1 个单位长度会耗费 1 1 1 个单位时间,掉落时每掉落 1 1 1 个单位高度也会耗费 1 1 1 个单位时间。
小杨想知道,从第 s s s 个挡板上的左端点出发到第 t t t 个挡板需要耗费的最少时间是多少?
注意:可能无法从第 s s s 个挡板到达到第 t t t 个挡板。
输入格式
第一行包含一个正整数 n n n,代表挡板数量。
第二行包含两个正整数 s , t s,t s,t,含义如题面所示。
之后 n n n 行,每行包含三个正整数 l i , r i , h i l_i,r_i,h_i li,ri,hi,代表第 i i i 个挡板的左右端点位置与高度。
输出格式
输出一个整数代表需要耗费的最少时间,如果无法到达则输出 − 1 -1 1
样例1

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

样例范围
耗费时间最少的移动方案为,从第 3 个挡板左端点移动到右端点,耗费 3 个单位时间,然后向右移动掉落到第 2 个挡板上,耗费 100000 − 6 = 99994 100000-6=99994 1000006=99994 个单位时间,之后再向右移动 1 个单位长度,耗费 1 个单位时间,最后向右移动掉落到第 1 个挡板上,耗费 3 个单位时间。共耗费 3 + 99994 + 1 + 3 = 100001 3+99994+1+3=100001 3+99994+1+3=100001 个单位时间。
数据范围
在这里插入图片描述

对于全部数据,保证有 1 ≤ n ≤ 1000 , 1 ≤ l i ≤ r i ≤ 1 0 5 , 1 ≤ h i ≤ 1 0 5 1≤n≤1000,1≤l_i≤r_i≤10^5,1≤h_i≤10^5 1n1000,1liri105,1hi105
参考程序

#include<bits/stdc++.h>
using namespace std;const int maxn = 1e4+10;struct edge {int v, w;edge() {}edge(int vv,int ww) {v=vv;w=ww;}
};struct node {int dis, u;node () {}node (int diss,int uu) {dis=diss;u=uu;}bool operator>(const node& a) const {return dis > a.dis;}
};vector<edge> e[maxn];
int dis[maxn], vis[maxn];
priority_queue<node, vector<node>, greater<node> > q;
int cnt;
void dijkstra(int s) {for (int i=1;i<=cnt;i++)dis[i]=INT_MAX;dis[s] = 0;q.push(node(0, s));while (!q.empty()) {int u = q.top().u;q.pop();if (vis[u]) continue;vis[u] = 1;for (auto ed : e[u]) {int v = ed.v, w = ed.w;if (dis[v] > dis[u] + w) {dis[v] = dis[u] + w;q.push(node(dis[v], v));}}}
}map<pair<int,int>,int> mp;
vector<int> es[2010];
int l[maxn],r[maxn],h[maxn];
int main() {int n;cin>>n;int s,t;cin>>s>>t;for (int i=1;i<=n;i++) {cin>>l[i]>>r[i]>>h[i];mp[make_pair(l[i],h[i])]=i;mp[make_pair(r[i],h[i])]=n+i;es[i].push_back(i);es[i].push_back(n+i);e[i].push_back(edge(n+i,r[i]-l[i]));e[n+i].push_back(edge(i,r[i]-l[i]));}cnt=2*n+1;for (int i=1;i<=n;i++) {int hh = -1,idx = i;for (int j=1;j<=n;j++) {if(i==j)continue;if(l[j]<=l[i]&&l[i]<=r[j]&&h[j]<=h[i]) {if(h[j]>hh) {hh=h[j];idx=j;}}}if(hh!=-1) {if(!mp[make_pair(l[i],hh)]) {mp[make_pair(l[i],hh)]=cnt++;}int v = mp[make_pair(l[i],hh)];e[i].push_back(edge(v,h[i]-hh));e[idx].push_back(edge(v,abs(l[i]-l[idx])));e[n+idx].push_back(edge(v,abs(l[i]-r[idx])));e[v].push_back(edge(idx,abs(l[i]-l[idx])));e[v].push_back(edge(n+idx,abs(l[i]-r[idx])));es[idx].push_back(v);}hh = -1,idx = i;for (int j=1;j<=n;j++) {if(i==j)continue;if(l[j]<=r[i]&&r[i]<=r[j]&&h[j]<=h[i]) {if(h[j]>hh) {hh=h[j];idx=j;}}}if(hh!=-1) {if(!mp[make_pair(r[i],hh)]) {mp[make_pair(r[i],hh)]=cnt++;}int v = mp[make_pair(r[i],hh)];e[n+i].push_back(edge(v,h[i]-hh));e[idx].push_back(edge(v,abs(r[i]-l[idx])));e[n+idx].push_back(edge(v,abs(r[i]-r[idx])));e[v].push_back(edge(idx,abs(r[i]-l[idx])));e[v].push_back(edge(n+idx,abs(r[i]-r[idx])));es[idx].push_back(v);}}dijkstra(s);int ans = INT_MAX;for (auto i:es[t]) {ans=min(ans,dis[i]);}if(ans!=INT_MAX)cout<<ans<<"\n"; else cout<<"-1\n";
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP教程:1 词袋模型和TFIDF模型

文章目录 词袋模型TF-IDF模型词汇表模型 词袋模型 文本特征提取有两个非常重要的模型&#xff1a; 词集模型&#xff1a;单词构成的集合&#xff0c;集合自然每个元素都只有一个&#xff0c;也即词集中的每个单词都只有一个。 词袋模型&#xff1a;在词集的基础上如果一个单词…

上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!

上海理工大学&#xff08;University of Shanghai for Science and Technology&#xff09;&#xff0c;位于上海市&#xff0c;是一所以工学为主&#xff0c;工学、理学、经济学、管理学、文学、法学、艺术学等多学科协调发展的应用研究型大学&#xff1b;是上海市属重点建设大…

Linux系统及常用指令

目录 1、什么是Linux系统 2、为什么要用Linux系统 3、Linux系统的种类 4、如何安装Linux系统 5、常见的适配器种类 6、学习第一个Linux指令 7、安装ssh客户端软件 8、Linux系统的目录结构 9、Linux的常用命令 9.1 目录切换命令 9.2 查看目录下的内容 9.3 查看当前…

vue项目build以后整合到springboot项目里面---------gxl

很多时候我们需要用到vue的组件&#xff0c;但是全栈的背景下懒得去搞前后端分离&#xff0c;很多权限校验后台都写好了&#xff0c;没必要再去做接口或者前端写一遍了&#xff0c;因此我们需要把打包后的项目整合到项目里面。 整合也很简单&#xff0c;照常vue项目开发&#…

UE4-蓝图(可视化编程)学习

一.开关门交互实现 1.需要用到的模板和内容包 2.给门添加碰撞 进入第三人称模板场景&#xff0c;找到门的模型&#xff0c;并将门的模型添加到我们的场景中&#xff1a; 此时我们运行游戏&#xff0c;会发现我们的角色可以穿过我们门的模型&#xff0c;说明我们没有给门添加碰…

水利行业的智慧转型之路:分析智慧水利的核心要素与优势,展望其在提升水资源利用效率、保障水安全方面的广阔前景

目录 引言 一、智慧水利的核心要素 1. 物联网技术 2. 大数据与云计算 3. 人工智能与机器学习 4. 移动互联网与GIS技术 5. 标准化与信息安全 二、智慧水利的优势 1. 提高水资源利用效率 2. 增强水灾害防御能力 3. 提升水环境治理水平 4. 促进水利服务智能化 三、展望…

Grafana :利用Explore方式实现多条件查询

背景 日志统一推送到Grafana上管理。所以&#xff0c;有了在Grafana上进行日志搜索的需求&#xff0c;而进行日志搜索通常需要多条件组合。 解决方案 通过Grafana的Explore的方式实现多条件查询。 直接看操作步骤&#xff1a; 在主页搜索框中输入“Explore” 进入这个界面…

Elasticsearch:评估搜索相关性 - 第 1 部分

作者&#xff1a;来自 Elastic Thanos Papaoikonomou, Thomas Veasey 这是一系列博客文章中的第一篇&#xff0c;讨论如何在更好地理解 BEIR 基准的背景下考虑评估你自己的搜索系统。我们将介绍具体的技巧和技术&#xff0c;以便在更好地理解 BEIR 的背景下改进你的搜索评估流程…

静态网站怎么更新数据

今天看到个问题 我不是行业从业者&#xff0c;但目前遇到一个问题 我公司网站为纯静态&#xff0c;除了直接从html里修改文字外能不能这样 建立一个xml或者txt文档&#xff0c;其中有很多信息&#xff0c;例如网站名称&#xff0c;电话&#xff0c;备案号等&#xff0c;一行一行…

Java 网络编程(TCP编程 和 UDP编程)

1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09; 文章目录 1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09;2. 网络编程的概念3. IP 地址3.1 IP地址相关的&#xff1a;域名与DNS 4. 端口号&#xff08;port&#xff09;5. 通信协议5.1 通信协议相关的…

40.简易频率计(基于等精度测量法)(3)

&#xff08;1&#xff09;BCD8421码&#xff1a;十进制数字转换成BCD8421码的方法 补零&#xff1a;你需要显示多少位数字&#xff0c;就在前面补上四倍的位宽。比如你要显示一个十进制8位的数字&#xff0c;就在前面补上8*432个零。判断&#xff1a;判断补零部分显示的十进制…

叉车指纹一键启动/熄火车辆,“锁”住叉车安全

在现代工业领域&#xff0c;叉车作为重要的物流搬运工具&#xff0c;其安全性和便捷性一直是人们关注的焦点。为此&#xff0c;我们引入了一项技术——叉车指纹一键启动/熄火系统&#xff0c;真正实现了叉车安全的“锁定”。 这项技术不仅仅是简单的启动或关闭车辆的手段&#…

Axure RP移动端医院在线挂号app问诊原型图模板

医疗在线挂号问诊Axure RP原型图医院APP原形模板&#xff0c;是一款原创的医疗类APP&#xff0c;设计尺寸采用iPhone13&#xff08;375*812px&#xff09;&#xff0c;原型图上加入了仿真手机壳&#xff0c;使得预览效果更加逼真。 本套原型图主要功能有医疗常识科普、医院挂号…

云监控(华为) | 实训学习day3(10)

实现数据的增删改查 SpringBoot框架模式 向送外卖一样理解 写程序 1、准备食材(java bean) 2、菜谱(pojo接口->预制->sql 语句) 3、service处理 4、controller 派送 5、用户请求->页面 一、Spring Boot实现增加 第一步&#xff1a;食材(表),用户增加,这里还是用户…

【Android studio环境搭建】Android studio连接夜神模拟器

Android studio连接夜神模拟器 一、 步骤 1.下载好Android Studio和夜神模拟器, 2.打开夜神模拟器&#xff0c;找到其安装目录下的 nox_adb.exe文件 3.右键进入cmd命令打开&#xff0c;管理员权限执行下面命令 PS D:\Program Files\Nox\bin> .\nox_adb.exe connect 127.…

【论文解读】VoxelNeXt: Fully Sparse VoxelNet for 3D Object Detection and Tracking

VoxelNeXt 摘要引言方法Sparse CNN Backbone AdaptationSparse Prediction Head 3D Tracking实验结论 摘要 3D物体检测器通常依赖于手工制作的方法&#xff0c;例如锚点或中心&#xff0c;并将经过充分学习的2D框架转换为3D。因此&#xff0c;稀疏体素特征需要通过密集预测头进…

免费的数字孪生平台助力产业创新,让新质生产力概念有据可依

关于新质生产力的概念&#xff0c;在如今传统企业现代化发展中被反复提及。 那到底什么是新质生产力&#xff1f;它与哪些行业存在联系&#xff0c;我们又该使用什么工具来加快新质生产力的发展呢&#xff1f;今天我将介绍一款为发展新质生产力而量身定做的数字孪生工具。 新…

OpenCv 如何在 Java 中使用

Java 项目引入 OpenCv 环境准备OpenCv介绍下载Maven 安装动态链接库 完成 环境准备 JDK 8 OpenCv 4.0.0 Maven 3.9 Windows 11 OpenCv 介绍 OpenCV&#xff08;开源计算机视觉库&#xff09;是一个功能强大的计算机视觉和机器学习库。它提供了广泛的工具和算法&#xff0c;用…

MYSQL中的库表建立基础操作

任务&#xff1a;新建产品库mydb6_product&#xff0c; 新建3张表如下: 一&#xff0c; employees表 &#xff08;1&#xff09;:id&#xff0c;整型&#xff0c;主键 &#xff08;2&#xff09;:name&#xff0c;字符串&#xff0c;最大长度50&#xff0c;不能为空 &#xff…

【Django】网上蛋糕商城后台-类目管理

1.类目管理列表实现 当管理员进入后台管理后&#xff0c;点击类目管理&#xff0c;向服务器发出请求 path(admin/type_list/,viewsAdmin.type_list), # 处理商品分类管理列表请求 def type_list(request):# 读取分页页码try:ym request.GET["ym"]except:ym 1# 查…