随笔分类 -  数据结构

摘要:写在最前面:进阶内容,主要是依托于笔者自己的刷题经验,对题目进行分类 其中题目来源主要源自洛谷,以下三个题单 线段树+树链剖分专题 树链剖分练习题 大力树剖! 大力鸣谢以上三位题单创始者 温馨提示,如果想将三个题单做完,推荐顺序从上至下(依难度划分) 好啦,让我们来对树剖题型进行分类吧。 我会给出题 阅读全文
posted @ 2022-05-02 18:26 艾特玖 阅读(66) 评论(0) 推荐(0)
摘要:写在最前面,本文作者水平有限,若有不足需要补充处,望友善讨论 本文主要用于梳理树链剖分的基本原理,若想要进行刷题练习,请进入进阶内容 另外,基础内容中可能会涉及一些线段树的内容,推荐了解一些线段树基础 若想进入进阶内容,至少需要会基础线段树,其余需要较难的线段树操作,可以边写边学 线段树基础 树剖进 阅读全文
posted @ 2022-05-02 11:09 艾特玖 阅读(55) 评论(0) 推荐(0)
摘要:P3313 [SDOI2014]旅行 分析 老规矩,先来分析分析题目需求 我们总共需要满足以下四个要求 将城市x的居民的信仰改为c 将城市x的评分全部改为w 统计对于旅行者,其从x至y的路径中所有留宿过的城市的评级总和 统计对于旅行者,其从x至y的路径中所有留宿过的城市的评级最大值 不难发现,对于每 阅读全文
posted @ 2022-04-30 23:20 艾特玖 阅读(47) 评论(0) 推荐(0)
摘要:CF916E Jamie and Tree 分析 换根树剖 这类题目不多,一般都是需要分类讨论。 题意: 支持以下操作: 换根 子树修改 LCA 子树查询 我们挨个分析 先以1为根将整棵树剖一遍 接着处理每个操作: 1.直接换 2.我们要分类讨论,为了叙述方便,记x,y在原树中的LCA为lca(x, 阅读全文
posted @ 2022-04-30 22:08 艾特玖 阅读(34) 评论(0) 推荐(0)
摘要:P6157 有趣的游戏 分析 还是一样,看一看题目要求。 每一次系统会给出一条链,小 A 可以从这条链上找出两个点权不同的点 x,y,他的得分是 \(w_x mod w_y\)。然后小 B 会从整棵树中选取两个小 A 没有选过的点,计分方式同小 A。 非常容易推理出,对于A而言,其选出的最大答案是选 阅读全文
posted @ 2022-04-30 21:53 艾特玖 阅读(57) 评论(0) 推荐(0)
摘要:P4211 [LNOI2014]LCA 分析 本题要计算的就是l~r与z的LCA的深度之和 我们来看看,是否可以将求多个dep转化一下 我们先对dep有一个理解,dep就是从i到root总共有多少点 我们从整体上考虑,发现对于一个询问:l , r , z 来说,所有的 lca 都在 z 到根的路径上 阅读全文
posted @ 2022-04-30 20:51 艾特玖 阅读(58) 评论(0) 推荐(0)
摘要:P4616 [COCI2017-2018#5] Pictionary 分析 啊,也不算很麻烦,我们主要展示思路过程。 首先,看到q次询问中,每次询问使得a和b的联通的最早时间。那我们自然想到,可以直接求a和b的gcd,然后就可以得到一定能将其连接起来的日子了。 然后发现,这没什么用,因为在这之前的某 阅读全文
posted @ 2022-04-25 21:55 艾特玖 阅读(59) 评论(0) 推荐(0)
摘要:P3925 aaa被续 分析 这题不算很麻烦,我们直接来说思路。 算法:树剖+线段树 首先不难想到,我们肯定是从最大值开始算起,接下来考虑该点对答案的贡献。 对于枚举的点,我们假设点为i 其对答案的贡献是,i到1的路径中,所经过的所有节点的子树中的i在从小到大的排位*$val_i$的和 转化一下,则 阅读全文
posted @ 2022-04-25 20:38 艾特玖 阅读(43) 评论(0) 推荐(0)
摘要:P5838 [USACO19DEC]Milk Visits G 分析 这题有两种写法 我们先说更容易理解,但是时间复杂度较高的写法。 树剖+二分 时间复杂度\(O(Nog^2N)\) 思路非常简单。 我们建立树剖后,将所有颜色的dfs序放入数组,排一下序。 对于每次询问,我们沿链上翻时,该条链的df 阅读全文
posted @ 2022-04-15 21:07 艾特玖 阅读(52) 评论(0) 推荐(0)
摘要:P3979 遥远的国度 分析 树剖+线段树+分类讨论(树剖换根) 我们先在这里放结论 换根,不影响我们用从1建立的树剖跑树中路径的操作。 换根,会影响利用子树的性质,因为换过根后,树中结点子树的节点dfs序可能就不连续了,但可以通过分类讨论避免掉,具体看下文。 我们来以本题作为范本讲讲树剖换根 总共 阅读全文
posted @ 2022-04-15 17:41 艾特玖 阅读(101) 评论(0) 推荐(0)
摘要:Kruskal重构树 前言 事情的起因是,上年在上海区域赛中,碰到了铜牌题用到了这个知识点,因为不会,又kuangkuang打铁了。 说要总一下来着,但拖延症发作,硬是拖到了今天,但也不是没有好处,现在由于水平提升一些,我们可以将例题讲的更清楚些。 下面我们就开始吧 实现过程 这点并不难说 将边按照 阅读全文
posted @ 2022-04-14 23:12 艾特玖 阅读(241) 评论(1) 推荐(2)
摘要:P3976 [TJOI2015]旅游 分析 这题和染色,是非常类似的题型。我们从头来看。 本题要求我们动态维护一条链上,从起点到终点中,挑选一个点为买,再挑选一个点为卖,能得到的最大利润(若利润为负则为0,即可以理解为不买不卖) 需要注意的是,因为买的点编号一定要比卖的点靠前(最多刚买的就卖,但这跟 阅读全文
posted @ 2022-04-08 18:11 艾特玖 阅读(80) 评论(0) 推荐(0)
摘要:P3401 洛谷树 分析 很有意思的题目,我们来从头分析。 查询操作 首先不难分析,为了要求一段路径的异或值,我们采用类似前缀和的方式,预处理出来,从根节点到每个节点的边权异或值。将该数组设为sum 这样,我们想求u,v之间路径的异或值时,只需要求sum[u] ^ sum[v] 就可以得到从u-v之 阅读全文
posted @ 2022-04-08 11:56 艾特玖 阅读(140) 评论(0) 推荐(0)
摘要:P4374 [USACO18OPEN]Disruption P 分析 还是蛮套路的,我们来总结一下这题的推理过程 首先考虑,从每一条边去找哪一条边是我们需要的最短的替换路。发现太麻烦了,则正难则反,我们从新加的每一条路去考虑。 对于新加的边,其能更新其两个端点在树中的路径 依据此,我们的问题即转化为 阅读全文
posted @ 2022-04-04 23:08 艾特玖 阅读(47) 评论(0) 推荐(0)
摘要:原题链接P4092 [HEOI2016/TJOI2016]树 分析 写这篇题解是因为好像用了个跟大家都不一样的思路去写了这道题目。 这题用的知识点依旧是:树剖+线段树 关键在于,我们维护的是什么?在这里,我们考虑维护一个区间是否存在染色的点 接下来,我们分别说说这两个操作中具体怎么操作。 标记操作 阅读全文
posted @ 2022-04-04 21:06 艾特玖 阅读(54) 评论(0) 推荐(0)
摘要:P2486 [SDOI2011]染色 分析 我们来根据操作来讨论一下,需要维护的值有什么。 将节点 a 到节点 b 的路径上的所有点(包括 a 和 b)都染成颜色 c。 很明显,我们需要维护一下tag,来保存该区间是否发生了整体被某种颜色覆盖 这并不困难,我们把眼光放到第二个操作上 询问节点 a 到 阅读全文
posted @ 2022-03-20 17:32 艾特玖 阅读(57) 评论(0) 推荐(0)
摘要:P1505 [国家集训队]旅游 分析 这题和P4114 Qtree1这道题目非常之类似。其中关于如何将边权转化为点权并维护在Qtree1的题解中,需要请看这里题解。 在Qtree1这道题目里面,我们只需要维护最大值即可。 但在旅游这道题中,我们需要维护最小值,最大值,总和。 但这都不是最麻烦的,最麻 阅读全文
posted @ 2022-03-20 00:27 艾特玖 阅读(62) 评论(0) 推荐(0)
摘要:P4114 Qtree1 分析 考查知识点 LCA+树剖+线段树 倒也不算难,我们看到,要做树上的单点修改,并且需要动态的知道一条路径上的最大值。 那就是这三个知识点了,因为如果若是一段连续的区间,那就不用LCA了,直接线段树+树剖就可以做了 利用树剖,将树拆成区间问题,同时还能去做LCA。 这里想 阅读全文
posted @ 2022-03-19 22:15 艾特玖 阅读(47) 评论(0) 推荐(0)
摘要:树状数组应用 该栏目不断更新,各种树状数组题目 事情的起因是一道题目树上逆序对 看到题目的时候,就想到用树状数组去写,但是关于逆序对怎么用树状数组去写,记忆有些模糊了,就去翻了翻洛谷的板子题逆序对,然后惊奇的发现,原来写的方法,因为数据更新而被卡掉了。原来是用map做的离散化,因此时间复杂度是$O( 阅读全文
posted @ 2022-03-18 21:43 艾特玖 阅读(55) 评论(0) 推荐(0)
摘要:原题链接 分析 从题目我们容易分析,这题是用并查集扩展域去写的。 可以通过两个限制条件,来得到两个式子 朋友的朋友是我的朋友 ⇔ p[a]=b 与我敌对的人有敌对关系的人,是我的朋友 ⇔ p[a+n]=b,p[b+n]=a; 易错点:这点给我卡成SB了,就是我一直认为p[a+n]=p[b+n]的,就 阅读全文
posted @ 2021-11-11 20:04 艾特玖 阅读(59) 评论(0) 推荐(0)