GESP-Lv8总结(202406)

news/2025/3/13 19:29:24/文章来源:https://www.cnblogs.com/ClassmateE/p/18770762

GESP C++ 八级 2024 年 06 月

题目链接

错题

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

\(\color{red}{错误的:O(V})\)

\(\color{green}正确的:O(V+E)\)

求时间复杂度,我们就需要先搞清楚源代码是什么?以下为 DFS 模板

void dfs(int now, int fa)
{for(int i : e[now]){if(i == fa) continue;dfs(i, now);}
}	

显然的,DFS 完之后 每一个节点和每一条边都会枚举一遍,所以时间复杂度为 \(O(V + E)\)


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

\(\color{red}错误的:\)

void BubbleSort(char a[][], int n);

\(\color{green}正确的:\)

void BubbleSort(char a[][20], int n);

我一开始一不知道为什么,我甩给编译器编译了一下

[Error] declaration of 'a' as multidimensional array must have bounds for all dimensions except the first

意思就是

[错误]将“a”声明为多维数组必须对除第一个维度之外的所有维度都有边界

原因也就显而易见了


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

\(\color{red}根本不会:)\)

函数重载的规则如下

函数名称必须相同:重载的函数必须拥有相同的名称。

参数列表必须不同:参数的数量、类型或顺序必须有所不同。

返回类型可以不同:即使两个函数的参数列表完全相同,它们的返回类型也可以不同,但这通常不被视为重载。

不能通过返回类型区分重载:不能仅通过返回类型的不同来区分重载函数。


( T6 ) 在 \(N\) 个元素的二叉排序树中查找一个元素,最差情况的时间复杂度是 \(O(\log{N})\)\(\color{red}{False}\)

这一题的二叉排序树查找问题让我忽略了一个因素,就是 当该元素如果和根相同两子树都要查找,所以最差时间复杂度依旧显而易见了,答案为 \(O(N)\)


( T7 ) C++语言中,可以为同一个类定义多个析构函数。 \(\color{red}{False}\)

\(\color{red}根本不会:) × 2\)

参考博客


最远点对 \(\color{52C41A}{普及+/提高}\)

\(\color{red}{不会只能看题解QAQ}\)

因为题目说了 它是一棵树,所以我就可以将这一棵树的深度计算出来,既然它是一棵树,那么我们就应该将他当成一棵树来看待,不要在以图的角度来考虑问题。

解决方法如下

我们可以从最深的节点往上去寻找,但是这样做并不是最优解,我们很容易就举出反例:
a

但是如果我们从第二深的 不相同颜色 的节点在计算,就可以弥补这个解。

做的图论的难题还是太少了

#include<bits/stdc++.h>
#define LL long long
using namespace std;const int maxn = 1e5 + 5, INF = 0x3f3f3f3f;
int n, x, y, deep[maxn], pos1, pos2, ans;
vector <int> e[maxn];
bool a[maxn];
void dfs(int now, int fa)
{for(int i : e[now]){if(i == fa) continue;deep[i] = deep[now] + 1;dfs(i, now);}
}
void doit(int now, int fa, int c, int l)
{if(a[now] == c) ans = max(ans, l);for(int i : e[now]){if(i == fa) continue;doit(i, now, c, l + 1);}
}int main()
{scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d", &x), a[i] = x;for(int i = 1; i < n; i++){scanf("%d %d", &x, &y);e[x].push_back(y);e[y].push_back(x);}dfs(1, 0);// pos1 = 0, pos2 = 1;for(int i = 1; i <= n; i++){if(!a[i]){if(deep[i] > deep[pos1])pos1 = i;}else{if(deep[i] > deep[pos2])pos2 = i;}}if(pos1) doit(pos1, 0, 1, 0);if(pos2) doit(pos2, 0, 0, 0);printf("%d", ans);return 0;
}

总结

  1. 基本尝试不熟悉,如 DFS 的时间复杂度,函数的定义以及声明。
  2. 排列组合题需要加强,如计算方案,可能性全面性。
  3. 图论题量不够

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

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

相关文章

城市林业的无声革命:人工智能与古老生态学如何重新设计城市

城市林业的无声革命:人工智能与古老生态学如何重新设计城市 在摩天大楼的阴影下,一场静悄悄的变革正在发生——它融合了硅芯片与古老根系,算法与原住民智慧。 作者:保罗桑杜作者利用 PicLumen 创建的图像城市森林不再只是城市规划中的装饰性附带元素。它们已成为活生生的实…

Andriod连接

1.创建项目:2.配置: AndroidManifest.xml添加语句点击查看代码<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />android:usesCleartextTraffic…

虚拟试衣间

虚拟试衣间 一、团队介绍 1.1 团队概况 1.1.1 博客展示链接 团队名,组长博客链接https://www.cnblogs.com/c-eng/p/18763232 1.1.2 团队项目描述 虚拟试衣间 1.1.3 队员风采 姓名:曾成鑫 风格:Excellent Nimble Talented Perfect 擅长的技术:Python 编程的兴趣:c++ 希望的…

AI Agent替代化成风,企业HR SaaS如何选?| 盘点2025国内HR SaaS厂商Top10

自2025年以来,前有DeepSeek搅动国内外AI圈,后又国内外各大厂商纷纷加速AI技术及产品应用落地,紧随而来,在AI Agent成为又一关键热词,Manus携“全球首款通用Agent产品”再次掀起一番躁动。 如此喧嚣热闹的背景之下,向广大人力资源从业者传递一个强烈信号:AI技术的发展正在…

python的基本运用(3)——索引、切片、字符串

一、索引 索引在公司中一般也叫下标,或角标定义:可我们可以直接使用索引来访问序列中的元素,同时索引可分为正向索引和负向索引两种,而切片也会用到索引,如下图:Python中有序列:字符,列表,元组无序:集合正向索引:从0开始负向索引:-1开始二、切片 定义:切片是指对操…

[算法学习记录] 并查集(附例题)

并查集简介 并查集是一种重要的数据结构,主要用于实现节点之间的合并查询操作(例如判断两个节点是否属于同一个连通块(共享同一个父节点的节点组成的集合叫连通块)),在解决不相交集合时有很大的用处;并查集同样常用于处理无向图,来描述接点的连通性,在初始化时,每个节…

Electron 进程间通信(IPC)方法详解

Electron 是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架,它是基于 Chromium 和 Node.js 构建的,而 Chromium 本身是采用多进程架构的,所以 Electron 也是多进程的。 Electron 是一个多进程框架,它的进程主要分为两类:主进程(Main Process) 和 渲染进程(R…

从零开始的web前端学习-JavaScript

JavaScript 是一种运行在客户端(浏览器)的编程语言,实现人机互动效果:网页特效(监听用户的某些行为并令网页进行反馈) 表单验证(针对表单数据的合法性进行判断) 数据交互(获取后台数据并渲染到前端)JavaScript 组成ECMAScript:基础语法核心 Web APIs:DOM(页面文档…

【Azure Service Bus】分享使用 Python Service Bus SDK 输出SDK内操作日志

问题描述 使用Python代码消费Service Bus中的消息,默认情况 Console 中的信息都是通过 print 打印输出。 有时候需要调查更多SDK中的日志,那么如何才能让SDK输出更多的日志呢?问题解答 方法就是引入 Logging SDK,然后再初始化 ServiceBusClient 对象时,设置logging_enabl…

nvm和nodejs安装

nvm和nodejs安装安装 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。首先下载安装包,可以用GitHub上的,可以有点看,也可以用一些镜像,然后点击安装一直下一步即可。 然后打开命令行,可以用nvm -v指令…

dify文件上传到http节点

dify系统上传sys.files变量是Array[File]类型,由于 HTTP 请求节点不支持 Array[File] 上传,需要单独处理每个文件,以下是实现此功能的步骤: 添加迭代节点 迭代输入选sys.files 输出选http请求body http请求body类型选form-data 键值选迭代的item.File 本文使用dify版本为0.…