08 2021 档案

摘要:可持久化数据结构 可持久化 首先需要介绍可持久化的概念。可持久化就是,保存下来的每一次变化,所影响的那些节点。干说会比较抽象,所以我们以两道题目为例子,来展示可持久化的作用和含义。 可持久化tire树 可以用一张图来展示,可持久化tire树的操作。 当我们,插入一个新节点时,直接从该节点指向除了要插 阅读全文
posted @ 2021-08-26 19:06 艾特玖 阅读(48) 评论(0) 推荐(0)
摘要:线段树 原理 线段树,就是把一段区间,不断二分,分为一颗二叉树,去维护区间信息。 算法结构 一个完整的线段树代码中,通常由六个部分组成 这里展示以一个简单的整数问题2为例 struct Node 节点部分,其中维护的是,关于线段树所有需要用到的信息。 这里需要着重说一下的是,一般我们的Node会开到 阅读全文
posted @ 2021-08-25 21:13 艾特玖 阅读(40) 评论(0) 推荐(0)
摘要:树状数组 时间复杂度 单点修改 O(logn) 区间查询 O(logn) 前置知识 lowbit()运算:非负整数x在二进制表示下最低位1及其后面的0构成的数值。 #define lowbit(x) x & -x 树状数组的思想 树状数组的本质思想是使用树结构维护”前缀和”,从而把时间复杂度降为O( 阅读全文
posted @ 2021-08-23 20:37 艾特玖 阅读(33) 评论(0) 推荐(0)
摘要:并查集 简单对并查集性质及其能解决的问题做一下总结 性质:传递性,和相互性 可以解决的问题 可以利用集合的特点,来进行判环。 并查集可以在划分集合时候,可以实现维护集合的大小和集合中元素距离根节点的距离。 带权并查集,便可以利用集合中元素到根节点的距离的操作,通过相对的距离,来判断不同的元素之间的关 阅读全文
posted @ 2021-08-23 11:00 艾特玖 阅读(39) 评论(0) 推荐(1)
摘要:原题链接 法一:带权并查集 分析: 通过分析题目,假设s[i]为前缀和数组,我们可以得到以下等效关系: [l,r]内1的个数 ⇔ s[r]-s[l-1] ⇔ 若为奇数,则s[l],s[r]奇偶性不同,若为偶数则相同 因此我们可以用带权并查集来解决这个问题。 我们在用带权并查集时,是维护了一个相对关系 阅读全文
posted @ 2021-08-23 10:43 艾特玖 阅读(88) 评论(0) 推荐(0)
摘要:原题链接 分析 分析题目后,我们可以 知道,我们要求的就是,维护并查集中每个元素到根节点的距离,同时维护集合的大小。 第一个需要解决的问题 如何维护当前战舰到根节点的距离 当我们把一列战舰放b到另一列战舰a后,我们如何更新,另一个队列b中每一个战舰到根节点的距离? 我们维护一个数组d,表示的是x到p 阅读全文
posted @ 2021-08-22 20:32 艾特玖 阅读(42) 评论(0) 推荐(0)
摘要:原题链接 分析 裸的ST表 ST表 初始化 倍增枚举出区间的最大值,f[N] [M]代表,从n开始长度为2^m的区间最值。 查询 [l,r] 1.求出该区间长度最接近的倍增预处理后的长度,k = log(len)/log(2); 2.最大值为 \[ Max=max(f[l][k],f[r-2^k+1 阅读全文
posted @ 2021-08-22 13:08 艾特玖 阅读(29) 评论(0) 推荐(0)
摘要:原题链接 分析 首先,我们可以分析出,在一行中,各列摊位之间交换位置,是不会改变行的摊位数量,列也同理,则我们的问题就变为了,怎样移动可以获得最少移动次数,是的每行每列,其中各各格子的数都相同。 这时,就出现了一个贪心模型环形卡牌分配 题目默认只能左右传递,则,最优解一定是没有来回的,所从全局来看, 阅读全文
posted @ 2021-08-22 09:38 艾特玖 阅读(105) 评论(0) 推荐(0)
摘要:原题链接 题目分析 本题我们解决的是,在限制了区间长度时,求区间最大的平均值。 对于这个问题,第一个思路是最朴素的思路,枚举区间长度,再以此枚举每一个区间,区间内和的问题可以由前缀和来解决。但是这样,我们的时间复杂度就是趋近于n方的,肯定不行。随后想到是否可以用二分来解决这个问题。 既然考虑使用二分 阅读全文
posted @ 2021-08-21 12:48 艾特玖 阅读(263) 评论(0) 推荐(0)
摘要:原题链接 思路 我们可以通过题目上给出的图示看出,每一个等级的图是由前一个等级的图拼成的,拼接方式如图 因此在求解一个图上某一点的编号时,我们需要确定他是属于哪一块的,再进行坐标变换。 同时为了方便确定,我们将所有点的编号从0开始,同时坐标轴也会从0,开始。 接下来我们看坐标变化,以下图为例(图确实 阅读全文
posted @ 2021-08-17 13:29 艾特玖 阅读(145) 评论(0) 推荐(0)
摘要:原题链接 法一:分治法 思路 这里是实现一个sum函数,sum(p,k)表示 \[ p^0+p^1+...p^{k-1} \] 当k为偶数时,sum(p,k)可以拆解成 \[ p^0+p^1+...+p^{k/2-1}+p^{k/2}+...+p^{k-1} \] 即 \[ p^0+p^1+...+ 阅读全文
posted @ 2021-08-16 22:04 艾特玖 阅读(324) 评论(0) 推荐(0)
摘要:有些知识点很零碎,但找起来会很麻烦,就统一放到这里了。 大家如果有些自己比较零碎知识点,也可以发到下面哦,看到了会加进来。 尽量做好分类。 ###图论 一堆(大于等于2)拓扑图边变为,强连通图,只需加max(起点个数,终点个数)条边 一个边的双连通分量 ⇔ 任何两个点之间至少存在两个不相交路径 给定 阅读全文
posted @ 2021-08-16 13:16 艾特玖 阅读(77) 评论(0) 推荐(0)