
C++
文章平均质量分 75
Nooooooo!
如果自由的代价是孤独,那我坦然接受
展开
-
迭代加深搜索、启发式搜索、A*、IDA
迭代加深搜索(IDDFS)是深度优先搜索,与普通的dfs不同的是,每次深搜都会有搜索的最大深度限制,如果没有找到解,那么就增大深度,再进行深搜,如此循环直到找到的解为止,这样可以找到最浅层的解。IDDFS适和求解:搜索深度较深,但正确的解再较浅的深度的问题。IDDFS的使用前提是:一定要有解。A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法。IDA*算法是:基于迭代加深的A*算法。原创 2024-10-31 13:42:44 · 1486 阅读 · 0 评论 -
C++入门到入“坟”(一)
C++原创 2024-02-29 12:42:47 · 284 阅读 · 0 评论 -
C++入门到入“坟”(二)
c++原创 2024-02-29 16:52:00 · 390 阅读 · 0 评论 -
STL---vector(一)
STL---vector(一)原创 2024-03-12 13:00:53 · 227 阅读 · 1 评论 -
STL---vector(二)
STL---vector(二)原创 2024-03-12 17:50:29 · 467 阅读 · 1 评论 -
STL---vector(三)
STL---vector(三)原创 2024-03-13 13:23:21 · 1608 阅读 · 0 评论 -
STL---vector(四)/STL---迭代器(一)
我们应该都学过swap函数的用法。就是将n和m两个数值交换,在vector中也可以使用swap函数。这期我们将学习其余的相关函数的用法(我们可以发现n和m的值全部交换了。vector的使用及相关函数讲解。原创 2024-03-14 17:21:32 · 325 阅读 · 1 评论 -
C++常见十种排序方式
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。每次从待排序列中选出一个最小值,然后放在序列的起始位置,直到全部待排数据排完即可。实际上,我们可以一趟选出两个值,一个最大值一个最小值,然后将其放在序列开头和末尾,这样可以使选择排序的效率快一倍。原创 2024-05-13 17:51:44 · 4840 阅读 · 4 评论 -
STL---迭代器
STL---迭代器原创 2024-03-20 13:08:16 · 945 阅读 · 1 评论 -
STL-set集合
STL-set集合原创 2024-03-22 13:29:04 · 907 阅读 · 1 评论 -
STL-deque双向队列 & list链表 的用法
STL-deque双向队列 & list链表 的用法原创 2024-03-21 13:28:49 · 982 阅读 · 1 评论 -
并查集——基础篇
并查集是一种树型的数据结构,用于处理不相交的合并及查询问题。并查集的思想是用一个数组表示了整片森林(parent),树的结点唯一标识了一个集合,我们只要找到的某个元素的树根,就能确定它在哪个集合里。原创 2024-05-20 13:12:49 · 852 阅读 · 0 评论 -
并查集的应用——生成最小树
上期我们学习了并查集的基础(原创 2024-05-23 13:06:36 · 237 阅读 · 0 评论 -
图论——基础
本期我们将学习图论的基础。原创 2024-06-06 13:23:37 · 639 阅读 · 0 评论 -
哈希——字符串哈希
哈希算法原创 2024-09-24 12:50:53 · 2162 阅读 · 0 评论 -
哈希——哈希表
上期我们学习了哈希——字符串哈希(),本期我们将学习哈希中的哈希表。原创 2024-09-24 13:29:52 · 769 阅读 · 0 评论 -
哈希——离散化
离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:原数据:1,999,100000,15:处理后:1,3,4,2;原数据:{100,200},{20,50000},{1,400};处理后:{3,4},{2,6},{1,5};离散化本质上可以看成是一种特殊的哈希,其保证数据在哈希以后仍保持原态的全偏序关系,用于解决:影响最终结果只有元素之间的相对大小关系这一类的问题。原创 2024-09-25 12:27:32 · 457 阅读 · 0 评论 -
KMP算法
next[ j ] 代表字符串 p 中前 j 个字符的最大相同前缀和后缀的值。特别注意:这个值不含本身,比如字符串“ ABABA ” 最大相同前缀和后缀的值是 3,而不是 5,因为任何字符串如果取自身,那么从前缀和后缀必定相等。因此 next[ 0 ] = next[ 1 ] = 0。原创 2024-09-26 13:01:44 · 944 阅读 · 0 评论 -
Trie 字典树
Trie 字典树指的是:某个字符串集合构造的有根树。由于 Trie 字典树,较好的利用了字符串的公共前缀,因此有效的节约存储空间。Trie 树典型的应用是:用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无畏的字符串比较,查询效率比哈希树高。它有3个基本性质:A、根结点不包含字符,除根节点外每一个结点都只包含一个字符;原创 2024-09-26 13:29:45 · 395 阅读 · 0 评论 -
AC自动树
上期我们学习了Trie 字典树(),本期我们将学习AC自动树。原创 2024-09-26 13:47:20 · 472 阅读 · 0 评论 -
树形数组及应用
树状数组是一个查询和修改复杂度都为的数据结构。主要用于:数组的单点修改、区间求和。在使用前缀和求区间和的算法中,如果可以做到在的时间复杂度内查询任意的区间和,但是如果要修改其中一个点的值,那么需要修改一遍前缀和数组,修改的时间复杂度是。原创 2024-09-27 13:47:49 · 554 阅读 · 0 评论 -
倍增、RMQ、LCA及树上差分
倍增法(英语:binary lifting ),顾名思义就是翻倍。他能够使线性的处理转化为对数级的处理,大大的优化时间复杂度。这个方法在很多算法中均有应用,其中最常用的是:RMQ 问题和求 LAG(最近公共祖先)。倍增思想是一种十分巧妙的思想。“倍增”二字体现在它每次将当前的已知结果或考察范围扩大一倍。正是由于这个原因,它的时间复杂度降低了很多,一般是将一个系数 N 变为。原创 2024-10-12 13:03:04 · 572 阅读 · 0 评论 -
搜索优化、搜索进阶
搜索算法的时间复杂度大多都是指数级的,难以满足对程序时间的限制要求,为使降低时间复杂度,对深度优先搜索可以进行一种优化的基本方法——剪枝。搜索的进程可以看做是从树根出发,遍历一棵搜索树的过程,所谓剪枝,就是通过某些判断,避免一些不必要的遍历过程,形象的说:就是减去搜索树中的某些枝条。如:下图是4个数选3个数的组合的搜索树。所谓双向搜索指的是搜索沿两个方向同时进行:正向搜索:从初始节点向目标结点方向搜索:逆向搜索:从目标结点向初始结点方向搜索:当两个方向的搜索生成同一子结点时终止此搜索过程。原创 2024-10-17 13:29:15 · 900 阅读 · 0 评论 -
c++基础知识-图论进阶
对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若,则u在线性序列中出现在v之前。原创 2025-03-17 12:59:24 · 437 阅读 · 0 评论