自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 递归的本质

这些问题的演化过程是一个从大到小,由近及远的过程,并且会有一个明确的终点(临界点)。递归的能力在于用有限的语句来定义对象的无限集合。(2)递归的层数,受制于系统堆栈的大小(不同配置的机器默认大小不同),因此,不宜写递归调用层数太深的程序。递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决。1.问题a可以转化为一个规模更小的新问题a1,但是新问题a1的解法必须和a相同(递归算法的核心思想);2.必须有明确的递归终止条件(递归边界)。2 的和是一个偶数。

2025-04-19 08:25:50 202

原创 C++ 一些有用的函数和特性

此函数返回 x 的最低位的 的位置+1。比如说因为 10 的二进制为 1010, __builtin_ffs(10) 返回 ,因为最低位的1在第1位,加上1以后返回 2。在 C++ 中,lambda 表达式允许捕获外部变量以便在其体内使用。你不需要为gcd函数编写欧几里得算法,从现在开始我们可以使用了。此函数返回两个数字的 gcd。现在,您可以使用单引号 ( ' ) 分隔数字的数字,以提高可读性。可以在代码里嵌入一段原始字符串,该原始字符串不作任何转义。包围,包含如何捕获外部变量的信息。

2025-04-13 12:24:00 505

原创 最小生成树

图的生成树是它的一棵含有其所有顶点的无环连通子图。一幅加权图的最小生成树(MST)是它的一棵权值(树中所有边的权值之和)最小的生成树。图的一种切分是将图的所有顶点分为两个非空且不重叠的两个集合。横切边是一条连接两个属于不同集合的顶点的边。Kruskal 算法的时间复杂度为 O(m log m)。主要开销是排序。Prim 算法的时间复杂度为 O(),可以通过优先队列优化到 o(m log m),但用优先队列不如直接使用 Kruskal 算法方便。

2025-04-13 10:12:31 920

原创 KMP算法

假设主串长度为m,子串长度为n,那么主串要比对m-n+1个字符(除了最后那个长度比子串还短的都要比对) 最晦气的情况是刚好每次都是子串的最后一位不同步,那么每个主串字符都要比对n次 最坏情况的时间复杂度将是 O(m-n+1)即 O(mn-KMP算法是一种改进的字符串匹配算法,KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。+n)实际情况是m远大于n(毕竟这个算法发明的意义就是解决m远大于n时暴力算法的不适用),所以可以简写为O(mn)

2025-04-13 09:56:18 164

原创 字符串 hash

我们定义一个把字符串映射到整数的函数f,这个 f 称为是 Hash 函数,我们希望这个函数 f 可以方便地帮我们判断两个字符串是否相等。可以在每两个字符之间插入一个不会影响题目的字符并在两端再加入此字符,就可以保证修改后长度为奇数。所以我们可以使用64位无符号长整型unsigned long long存储hash值。存储hash值时,难免会有数据大小溢出的情况产生,此时需要我们重复mod一个值。这样在hash值超过ull上限时会直接归零,相当于不断地mod。又因为在C++中电脑计算mod运算的速度很慢。

2025-04-13 09:52:15 309

原创 Hello, World!

对于大部分编程语言来说,编写一个能够输出“Hello, World!”的程序往往是最基本、最简单的。因此,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常工作。一行,仅包含一个字符串:“Hello, World!逗号后面有一个空格。现在你就需要完成这样一个程序。

2025-04-12 12:22:06 185

原创 算法竞赛变量命名指南

拼音派:用 shanchu 表示删除,用 xiugai 表示修改。除了循环变量一般用 i,j,k 以外,其它变量名大家就放飞自我了。这样降低了代码可读性,一段时间以后谁也看不懂了,也不利于相互交流。新字母派:array,brray,crray 表示三个数组。这里按字母序列出一些推荐使用的变量名,仅供参考,抛砖引玉。新新字母派:img,jmg,kmg 表示三张图片。卖萌派:QAQ,qwq,TAT,orz。重排派:next,extn,xtne。化合物派:h2o, ch4, co2。复读派:n,nn,nnn。

2025-04-12 11:46:56 353

原创 广度优先搜索 BFS

接下来n行,每行一个长为 m 的字符串,表示整个迷宫的布局。字符‘.’表示空地,‘#’表示墙,‘S’表示起点,‘T’表示出口。当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。假设你已经得到了一个 n∗m 的迷宫的图纸,请你找出从起点到出口的最短路。广度优先搜索(bfs)广搜,又称宽度优先搜索,是一种搜索算法。4.拓展新的节点后,就在这次拓展的基础上继续拓展。3.遇到障碍,超出边界的情况,就跳过这次拓展。1.广搜从起点开始,开始拓展节点。

2025-03-15 17:32:02 197

原创 求助!这道题咋写

c++题目描述:在那神秘莫测的地底世界,兰迪和他的伙伴们不幸陷入了一座双层迷宫的重重围困之中。起初,他们手脚被魔法绳死死捆绑,宛如落入陷阱的困兽,每一丝挣扎都显得徒劳无功,只能在原地无奈喘息。但这群勇敢无畏的冒险者,心中从未熄灭希望的火种。他们咬紧牙关,拼尽全力,在漫长又煎熬的挣扎中,凭借着顽强的意志和不懈的努力,竟硬生生挣断了那看似坚不可摧的魔法绳,重获自由行动的力量。兰迪深吸一口气,双手迅速结印,口中念念有词,施展起神奇的感应魔法。

2025-03-08 18:19:14 201

原创 USACO 比赛指导建议和常见问题

USACO的中文全称是美国计算机奥林匹克竞赛这是一项面向全球选手的在线算法竞赛,任何对编程感兴趣的人都可以免费注册并参与。USACO 以其高质量的竞赛题目和公平的晋级机制,成为了许多算法爱好者和信奥选手追逐的目标。官网链接usaco.org适合人群:初学者到竞赛高手,不论年龄、国籍,均可参赛。

2024-12-08 14:44:37 1137

原创 深度优先搜索 DFS

这与 C++ 的递归机制有关,由于递归的底层原理是通过模拟数据结构栈来实现的,因此在弹出当前节点时需要保证后继压入栈的节点不能访问当前被访问过的节点。对每一个节点而言,都去访问这个节点的左子节点和右子节点,并对该节点的左子节点和右子节点继续进行相同的访问左右节点操作。先回溯到 D 的父节点 B,因为 B 的左节点已经被访问过,因此再次尝试访问 B 的右节点 E。因为 B 的左右节点都被访问过,则继续回溯到 B 的父节点 A,因为 A 的左节点 B 已经被访问过,因此再次尝试访问 A 的右节点 C。

2024-12-08 14:36:38 1109

原创 #C++小知识# 1.那些不同的排序算法

‌冒泡排序‌是一种简单的排序算法,其基本思想是:在待排序的一组数中,将相邻的两个数进行比较,若前面的数比后面的数大,则交换两数位置,这样,每一轮遍历都将当前未排序部分中的最大值“浮”到未排序部分的末尾。简单描述就是,在一个有确定范围的整数空间中,建立一个长度更大的数组,如当输入的元素是 n 个 0 到 k 之间的整数时,建立一个长度大于等于k的数组。你可以通过比较相邻卡片的数字大小,然后交换它们的位置(如果它们的顺序不符合你的要求),重复这个过程直到所有的卡片都按照你想要的顺序排列好。

2024-12-08 14:24:03 461

原创 一文讲清动态规划的本质

将一个复杂的问题分解成多个简单的子问题,并通过保存子问题的解来避免重复计算,从而提高求解效率。最优子结构问题:所谓的最优子结构问题,就是一个最优解可以通过其子问题的最优解而构成。子问题重叠问题:多个子问题在递归的过程中会重复出现,并且会被多次计算到。

2024-12-08 14:13:48 1316

原创 c++发展经历

1973年,C 语言的主体完成。在这种情况下,一个很自然的想法就是让C++从C语言继承过来,但是我们的Bjarne博士更具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如:从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了//从Ada得到了模板、名字空间,从Ada、Clu和ML取来了异常。大部分的C代码可以很轻易的在C++ 中正确编译,但仍有少数差异,导致某些有效的C代码在C++ 中失效,或者在C++ 中有不同的行为。

2024-12-08 14:09:01 911

空空如也

空空如也

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

TA关注的人

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