自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 AIOJ的介绍

总的来说,AIOJ作为一个专注于竞赛编程的在线评测系统,具有丰富的题库、多语言支持、实时评测和活跃的社区交流功能,为广大编程爱好者提供了一个优质、便捷的学习和交流平台。同时,AIOJ还提供题库和比赛,用户可以根据自己的兴趣和水平参加不同难度的题目练习和比赛,提高自己的编程水平和竞赛技巧。在以下文章中,我将详细介绍AIOJ的特点、功能和优势。实时评测:AIOJ系统采用实时评测的方式对用户的代码进行评分和反馈,用户可以在提交代码后立即看到评测结果,并根据反馈信息改进自己的代码,加深对编程知识的理解和掌握。

2025-05-01 23:17:21 423

原创 CSP-S复赛讲解

每个怪兽有一个实力 riri​,每个怪兽只可以欺负实力严格小于自己的怪兽,被成功欺负的怪兽出局。当未退出游戏的怪兽都已发起过攻击时,游戏结束。规定一种方案使得未退出游戏的怪兽数量尽可能少。

2024-10-26 23:03:12 1209

原创 科技与未来

科技的发展是不可逆转的趋势,它将深刻地影响我们的未来。在这篇文章中,我们探讨了科技的双刃剑效应、科技与人类精神的和谐共生、科技与可持续发展的关系、科技在教育中的应用、科技对工作市场的影响、科技与全球化的关系,以及科技与人类的未来。我们相信,只要我们以积极的态度去拥抱科技,我们就能利用科技的力量来创造一个更加美好的未来。这篇文章只是一个起点,它提供了一个框架,让我们思考科技与未来的关系。在实际的写作过程中,你可以根据自己的兴趣和专业知识,进一步丰富和深化文章的内容。

2024-10-26 10:17:33 853

原创 拥抱变化:在不确定性中寻找成长的力量

变化是不可避免的,但我们可以学会拥抱变化,从中寻找成长的力量。通过保持积极的心态,不断学习和创新,我们可以将变化转化为个人和社会发展的契机。让我们拥抱变化,以开放和创新的精神,共同创造一个更加美好的未来。在这个充满不确定性的时代,变化是我们最可靠的伴侣。它提醒我们,生活永远充满可能性,而我们每个人都有能力去塑造自己的未来。让我们不再害怕变化,而是勇敢地迎接它,用我们的智慧和勇气,共同开创一个充满希望的新世界。

2024-10-26 10:07:08 482

原创 深度优先搜索与广度优先搜索在C++中的应用

在计算机科学中,图的遍历是解决许多问题的基础,如路径寻找、网络分析等。深度优先搜索(DFS)和广度优先搜索(BFS)是两种基本的图遍历算法。本文旨在探讨这两种算法在C++中的实现及其应用,并通过比较分析它们的效率和适用场景。

2024-10-26 09:59:59 424

原创 堆意义下的数和运算

需要特别注意的是,在使用完堆中分配的内存空间后,必须使用关键字delete来释放这些内存,避免内存泄漏。在C++中,可以使用关键字new来动态分配内存,将数值存储在堆中。对于堆中的数值,可以进行各种运算操作,比如加减乘除、取模、取余等。在堆的意义下,数和运算指的是使用动态内存分配的方式来存储数值,并对这些数值进行各种运算操作。就表示将堆中存储的数值2和3相加。相加的结果赋值给了sum变量,最终sum的值为5。在堆中存储数值时,可以通过指针来访问这些数值。就可以访问到存储在堆中的数值1。

2024-08-05 14:35:55 574

原创 学习C++的5个好方法汇总

推荐的书籍如《C++ Primer》和《The C++ Programming Language》不仅详细介绍了C++的各项特性,还提供了丰富的实例和应用场景。以上就是要和大家分享的关于C++学习发的方法,各位小伙伴不要急于求成,而应享受每一步学习和解决问题的过程。每个人的学习路径都是独一无二的,重要的是找到适合自己的学习方法,持之以恒。《Effective C++》(Scott Meyers著)提供了深入的知识和实践指导,结合了国内的编程环境和实际案例,可以更好地理解和应用这些知识。

2024-08-03 13:46:45 517

原创 离散化C++

构建离散化映射表 离散化的关键是将连续的数据转换成离散的数据,并且保持数据的有序性。去重数据 在进行离散化时,通常会遇到一些相同的数据。排序数据 离散化的关键是将连续数据转换成离散数据,并保持数据的有序性。进行离散化 将原始数据按照离散化映射表进行映射,得到离散化后的数据。使用离散化后的数据 离散化后的数据可以用于各种场景,例如算法分析、数据结构设计、模型训练等。离散化是指将一组连续的数据转换为一组离散的数据,通常用于处理某些算法或数据结构的问题。以上代码将一组原始数据进行离散化,并输出离散化后的数据。

2024-08-03 13:37:41 545

原创 前缀和和二维前缀和

例如,prefixSum[0][0] 就等于 grid[0][0],prefixSum[1][1] 就等于 grid[0][0] + grid[1][0] + grid[0][1] + grid[1][1]。例如,prefixSum[0] 就等于 nums[0],prefixSum[1] 就等于 nums[0] + nums[1],以此类推。这样,sum 就等于 grid[i1][j1] + grid[i1+1][j1] + ... + grid[i2][j2]。使用前缀和数组可以高效计算某个区间的和。

2024-08-03 13:36:34 278

原创 Kruskal算法

请注意,以上代码仅实现了Kruskal算法的核心部分,即构建最小生成树。有关图的表示和输入,请根据具体情况进行调整。

2024-08-03 13:35:07 196

原创 最小生成树

是一个pair,用来存储边的权重和节点编号。然后,我们使用Prim算法计算最小生成树的总权重。最后,我们输出最小生成树的总权重。请注意,这只是一个简单的示例代码,并且假定输入的图是无向连通图。在实际应用中,你可能需要根据具体问题对代码进行适当的修改。在这个代码中,我们首先使用。

2024-08-03 13:32:42 202

原创 图的遍历C++(DFS+BFS)

使用这两种方法之一,您可以遍历图中的所有节点,并根据需求执行特定的操作。请注意,这些示例代码仅表示了图的遍历方法,您可以根据实际需求进行修改和扩展。在C++中,可以使用多种方法对图进行遍历,其中最常见的方法是深度优先搜索(DFS)和广度优先搜索(BFS)。

2024-08-03 13:29:25 526

原创 弗洛伊德算法(Floyd‘s algorithm)

弗洛伊德算法(Floyd's algorithm)是一种用于求解所有顶点间最短路径的算法。请注意,此示例代码中的邻接矩阵中的值应该是正整数,表示两个顶点之间的距离。中,然后使用三重循环来计算最短路径矩阵。最后,我们将最短路径矩阵输出到控制台。函数来执行弗洛伊德算法,该函数接受一个邻接矩阵和顶点个数作为参数。函数中,我们首先获取用户输入的顶点个数和邻接矩阵,然后调用。函数中,我们首先将邻接矩阵复制到一个临时矩阵。用于表示邻接矩阵的最大大小,以及常量。在该示例代码中,我们首先定义了常量。

2024-08-03 13:21:13 181

原创 Mojo——Someting important

Mojo can refer to several different things:In African-American folk magic and hoodoo, mojo refers to a small bag containing magical items such as herbs, roots, and charms that is carried for protection, luck, or other desired outcomes.In music, mojo can re

2024-08-02 16:27:40 233

原创 动态规划求解树和图问题

/ 树上的动态规划 vector<int> AdjList[MAXN];// 图上的动态规划 vector<int> AdjList[MAXN];// 递归函数,计算以节点u为起点的子图的动态规划结果 void dfs(int u) { visited[u] = true;// 递归函数,计算以节点u为根的子树的动态规划结果 void dfs(int u) { visited[u] = true;// 图的节点个数和边的个数 cin >> N >> M;// 树的节点个数 cin >> N;

2024-08-02 16:25:00 194

原创 动态规划C++

函数的参数包括背包容量W,物品重量数组wt,物品价值数组val,以及物品个数n。函数使用一个二维数组dp来存储中间状态的值。通过两重循环,递推计算出dp数组的所有值,并返回最终的最优解。动态规划是一种解决问题的算法思想,通常用于求解最优化问题。希望这个示例能帮助你理解如何在C++中实现动态规划。在这个示例中,我们定义了一个函数。

2024-08-02 16:22:39 198

原创 Perl编写的数字排序程序

注意,此程序假设用户输入的数字是正确的,并且每个数字以空格分隔。如果用户输入了非数字字符或者没有正确分隔数字,可能会导致错误。可以根据具体需求添加输入验证的部分。使用此程序,用户需要输入一组数字,以空格分隔。程序将使用Perl的。函数对数字进行排序,并打印排序后的结果。

2024-08-01 13:47:24 283

原创 实现哈夫曼树 Python和C++

这个程序首先通过统计字符频率来构建叶子节点列表,然后循环构建哈夫曼树,直到只剩下一个根节点。接下来,通过遍历哈夫曼树来生成每个字符的编码。最后,使用生成的编码来对原始数据进行编码和解码。这段代码首先会要求输入字符的数量和每个字符的频率,然后会构建哈夫曼树,并打印出每个字符对应的哈夫曼编码。需要注意的是,这里使用了优先队列来存储节点,并通过自定义比较函数对节点进行排序。

2024-08-01 13:44:36 246

原创 c++从小白到大神的方法

熟悉C++11及以后版本的新特性:例如自动类型推导(auto)、范围for循环(range-based for loop)、智能指针等。学习C++高级特性:例如泛型编程、异常处理、运行时类型信息(RTTI)等。理解C++对象模型和内存管理:学习如何管理内存以避免内存泄漏和错误。持续学习:跟上C++语言发展的步伐,学习新的最佳实践和工具。学习C++基础:包括语法、数据类型、控制流程、指针等。学习C++标准库:熟悉常用的容器、算法、IO流等。阅读C++源码:了解标准库和大型项目中的应用。

2024-08-01 13:41:19 459

原创 拓扑排序+代码

拓扑排序是图论中一个重要的概念,它主要用于解决有向无环图(DAG)中的问题。在拓扑排序中,我们需要对图中的节点进行排序,使得对于任意一对有向边 (u, v),u 在排序中出现在 v 之前。关键路径算法基于拓扑排序,通过对任务进行排序,计算每个任务的最早开始时间(EST)和最晚开始时间(LST),以及每个任务的总工期(TF)。拓扑排序的实现可以使用深度优先搜索(DFS)或者广度优先搜索(BFS)两种方式。下面我将分别介绍这两种实现方法。以上就是使用C++实现拓扑排序和关键路径的代码详解。

2024-08-01 13:35:52 898

原创 并查集(Disjoint Set)

并查集的基本思想是将每个元素看作一个独立的集合,每个集合有一个代表元素表示该集合。当两个元素要合并时,将其中一个元素的代表元素指向另一个元素的代表元素,即实现了两个集合的合并。当两个元素要合并时,将其中一个元素的代表元素指向另一个元素的代表元素,即将其中一个元素的parent值设为另一个元素的下标。Union函数实现了按秩合并的优化,将秩较小的集合合并到秩较大的集合上,减少合并时的时间复杂度。在并查集中,每个元素都是一个独立的集合,可以通过合并两个集合以及查询两个元素是否属于同一个集合来进行操作。

2024-08-01 12:20:35 211

原创 折半搜索(Binary Search)和meet in the middle

meet in the middle算法的时间复杂度通常为O(2^(N/2)),该算法主要适用于某些搜索问题的状态空间较大,但可以方便地拆分为两个子问题的情况。通过将搜索问题分解为两个子问题,并分别在两个子问题中进行搜索,meet in the middle算法能够大幅度减少搜索的时间复杂度。meet in the middle算法则是一种将搜索问题分解为两个子问题,并通过在两个子问题中进行搜索,最后将结果合并的方法。

2024-07-31 16:20:29 511

原创 Berlekamp-Massey算法

最终得到的LFSR的线性递推关系为:s[n] = C * s[n-L] + C * s[n-L+1] + ... + C * s[n-1]。a. 计算差异d = s[i] + C * s[i-1] + C * s[i-2] + ... + C * s[i-m]。输入:S = [1, 0, 1, 1, 0, 1] 输出:C = [1, 1, 1, 0, 1, 0]d. 如果L <= 2m,则更新L和C,令L等于当前迭代的次数,令C等于d。假设已知的输出序列为s[0], s[1], ..., s[N-1]。

2024-07-31 16:02:05 698

原创 Bellman-Ford算法

Bellman-Ford算法是一种用于解决单源最短路径问题的算法。它可以处理带有负权边的图,并且可以检测到负权环。上述代码使用了C++语言实现了Bellman-Ford算法,并且通过一个包含5个顶点和8条边的图进行了演示。

2024-07-31 15:51:22 540

原创 SPFA算法详讲

在一般情况下,SPFA算法的时间复杂度为O(kE),其中k是一个常数(一般在2到3之间),E是边的数量。然而,在最坏情况下,SPFA算法的时间复杂度可以达到O(VE),其中V是点的数量,E是边的数量。接下来 m 行,每行三个整数 u、v、w,代表一条从点 u 到点 v 的有向边,边的权值为 w。总之,SPFA算法是一种解决最短路径问题的有效算法,它在带负权边的图中表现出良好的性能,并且在一些情况下能够更快地求出最短路径。输出: 输出 n 行,每行一个整数,表示从起点到该点的最短路径长度。

2024-07-31 15:47:30 559

原创 SPFA算法

SPFA 的全称是 “Shallowest-First Search with Priority Queue”,它是 Dijkstra 算法的一种变体,但比 Dijkstra 更适合稀疏图(边的数量远小于顶点数量的平方),因为它不需要邻接矩阵存储整个图,而是利用优先队列(通常使用 Fibonacci heap)来优化查找过程。由于 SPFA 使用了优先队列,所以其时间复杂度接近于 O((E+V)logV),其中 E 是边数,V 是顶点数,这使得它在大规模图上表现优于 Dijkstra(O(V^2))。

2024-07-31 15:43:11 389

原创 迪杰斯特拉

通常需要一个 std::map 来记录每个顶点的距离以及是否已被访问的状态。假设我们有 std::unordered_map distAndVisited,其中 int 表示顶点编号,pair 包含当前已知的距离和是否已经被访问。3. 实现迪杰斯特拉算法的核心函数。迪杰斯特拉(Dijkstra) 算法是一种用于解决单源最短路径问题的经典图算法。它能够找出从一个特定的起始顶点到图中其他所有顶点之间的最短路径。2. 初始化数据结构。

2024-07-24 15:28:49 145

原创 链式前向星

链式前向星,也被称为线性链式前向星(Linear Linked Forward Star),是一种用于存储稀疏图数据结构的数据表示方法。它结合了邻接矩阵和邻接表的优点,适用于处理大规模、稀疏的图数据,特别是对于图中边的数量远小于顶点数的情况下非常有效。

2024-07-24 15:18:55 454

原创 递归的讲解与练习

递归

2023-08-24 10:38:35 140 1

原创 CSP 2022 入门级第一轮

栈 S 中依次有数据 e1 、 e2 、 e3 、 e4 、 e5 和 e6 进栈,队列 Q 依次有数据 e2 、 e4 、 e3 、2. 有 6 个元素,按照 6、5、4、3、2、1 的顺序进入栈 S,请问下列哪个出栈序列是非法的()。进栈 S 、出栈 S 、进队列 Q 、出队列 Q 的顺序操作,不同数据间的操作可能会交错。8. 一棵有 n 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 1 个位。30. 对于任意输入的 n ,随着所输入 k 的增大,输出的第二个数会变成“ 1 ”。

2023-08-23 11:43:08 482

原创 每日一道编程题

关于循环的一道题目

2023-08-23 11:13:56 148

c++,排序,快速排序

快速排序 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序,快速搞定。 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。 对挖坑填数进行总结: i =L; j = R; 将基准数挖出形成第一个坑a[i]。 j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。 i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。

2023-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除