摘要: 并查集是一种树形数据结构,它用一棵树来表示一个集合,能够做到快速的查找与合并。 例如下面两棵树: 很容易看出两个集合是 \(\{1,2,3,4,5\},\{6,7,8\}\)。 初始化 初始时,每个节点都在一个集合,也就是说,这个森林时每个节点一棵树。 然而,这里树的存储并不是按照图论的存储方法,而 阅读全文
posted @ 2026-02-11 23:21 tangtianyao0123 阅读(13) 评论(0) 推荐(0)
摘要: ST 表是借用倍增思想的数据结构,它通过预处理每个数后面 \(2^k\) 个数的最大值来 \(O(1)\) 查询静态区间最大值。 设 \(f(i,j) = \max_{k = i}^{i + 2^j - 1}\{a_k\}\),那么 \(f(i,j)\) 的最大值就是左半部分的最大值和右半部分的最大 阅读全文
posted @ 2026-02-10 22:22 tangtianyao0123 阅读(5) 评论(0) 推荐(0)
摘要: 顾名思义链表就是一条链组成的数表。它通过记录前驱后继成功的优化了插入和删除的时间复杂度,但由于兼顾插入删除导致它在寻找数据的时候表现欠佳。 前驱表示一个数在数表的前面,后继表示一个数在数表中的后面。 我们可以定义一个结构体,存储当前编号下的数、前驱、后继。 单向链表 单项链表中,我们只存储每个节点的 阅读全文
posted @ 2026-02-10 22:10 tangtianyao0123 阅读(2) 评论(0) 推荐(0)
摘要: 队列是一种先进先出的数据结构。 正因为它的先进先出,他就能帮我们解决许多问题。但在解决问题之前,我们先需要知道怎么实现一个队列。(有没有发现跟栈的句式都一样?) STL STL 大法吼!!! 人性的 STL 为我们提供了容器 queue,它的定义方法如下: queue<类型> 变量名; 它的常用函数 阅读全文
posted @ 2026-02-09 23:04 tangtianyao0123 阅读(4) 评论(0) 推荐(0)
摘要: 栈 栈是一种先进后出的数据结构。 正因为它的先进后出,他就能帮我们解决许多问题。但在解决问题之前,我们先需要知道怎么实现一个栈。 STL STL 大法吼!!! 人性的 STL 为我们提供了容器 stack,它的定义方法如下: stack<类型> 变量名; 它的常用函数如下: 函数 作用 #inclu 阅读全文
posted @ 2026-02-07 21:39 tangtianyao0123 阅读(5) 评论(0) 推荐(0)