随笔分类 - 数据结构
摘要:阅读本文前,请确保已经阅读并理解了如下两篇文章: "『线段树 Segment Tree』" "『线段树简单运用』" 引入 这是一种由$THU zkw$大佬发明的数据结构,本质上是经典的线段树区间划分思想,采用了自底向上的方式传递区间信息,避免的递归结构,其代码相对经典线段树更简单,常数更小,易于实现
阅读全文
摘要:树状数组 单点修改 区间和查询 众所周知,树状数组是一个可以维护区间前缀和的数据结构,普通的树状数组应该能够支持 单点修改,区间查询 的操作,其修改和查询的时间复杂度均为$O(log_2n)$。 $Code:$ 二维树状数组 对于一个二维矩阵内的部分和,其实直接利用树状数组进行简单拓展就可以实现了。
阅读全文
摘要:柱状图 Description WTH获得了一个柱状图,这个柱状图一共有N个柱子,最开始第i根柱子的高 度为xi,他现在要将这个柱状图排成一个屋顶的形状,屋顶的定义如下: 1. 屋顶存在一个最高的柱子,假设为i,最终高度为hi.它是所有柱子之中最 高的. 2. 第j根柱子的高度为hj=hi |i j
阅读全文
摘要:新增一道例题 左偏树 Leftist Tree 这是一个由堆(优先队列)推广而来的神奇数据结构,我们先来了解一下它。 简单的来说,左偏树可以实现一般堆的所有功能,如查询最值,删除堆顶元素,加入新元素等,时间复杂度也均相等,与其不同的是,左偏树还可以在$O(log_2n)$的时间之内实现两个堆的合并操
阅读全文
摘要:『线段树简单运用』 更新了例题部分 更新了总结部分 线段树的基础博客见这篇 "『线段树 Segment Tree』" ,这里通过两道例题来深入理解。 农场分配 Description Farmer John最近新建立了一个农场,并且正在接受奶牛的畜栏分配请求,有些 畜栏会看到农场美妙的风景。:) 农
阅读全文
摘要:离散化(discrete) 离散化可以说是一个很基础的算法吧,但是有些时候还是很好用很有必要的算法。 离散化的排序的一个运用,具体地讲,离散化算法是将无穷大集合中的若干个元素映射到有限大小的集合中,以达到对算法进行时间,空间复杂度的优化的效果。 当然,使用离散化算法进行优化需要满足离散化只有的数值不
阅读全文
摘要:更新了基础部分 更新了$lazytag$标记的讲解 线段树 Segment Tree 今天来讲一下经典的线段树。 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 简单的说,线段树是一种基于分治思想的数据结构,用来维护序列的区间特殊值,相对
阅读全文
摘要:分块 分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。 分块其实可以说是一种偏数据结构类的通用型算法吧,没有很艰深的内容,与暴力最为相似,但是在很多题目中都能派上很好的用场。 我们可以先通过一道模板例题来了解分块
阅读全文

浙公网安备 33010602011771号