随笔分类 -  数据结构——树状数组/线段树/ST表

摘要:VIII.CF785E Anton and Permutation 我们看一下交换以后,哪些逆序对会受到影响。 设交换了位置(x,y),它们原本的值是valx,valy。不妨设x<y。 对于一个位置i<xx,y在交换后仍然都排在它后面,不受影响; 对于一个位置i>y,$ 阅读全文
posted @ 2021-04-02 16:06 Troverld 阅读(59) 评论(0) 推荐(0) 编辑
摘要:VII.[ZJOI2013]K大数查询 这题常卡的我快哭了QaQ 首先,我们仍然考虑树套树。 下标树套权值树(即我们前几题的一贯做法) 我们发现,要在区间树上打上区间添加数的tag,并且用tag树的并集进行二分。 因此最终的结果就是,大区间被分割成logn个小区间,但是每个小区间的$\log 阅读全文
posted @ 2021-04-02 16:03 Troverld 阅读(48) 评论(0) 推荐(0) 编辑
摘要:VI.[CQOI2011]动态逆序对 这题需要支持查询前缀大于某个值的数量、后缀小于某个值的数量以及在某个地方插入值。 换句话说,我们要支持在以下标为x轴,权值为y轴的二维平面上动态删点以及询问矩形和。 如果我们把删点的时间看做z轴的话,那就是典型的三维偏序。 直接树套树完成。 代码(常 阅读全文
posted @ 2021-04-02 16:02 Troverld 阅读(48) 评论(0) 推荐(0) 编辑
摘要:V.【模板】三维偏序(陌上花开) 树套树比CDQ分治可爱一万倍!!!数据结构什么的最可爱了!!! 那么树套树如何进行三维偏序呢? 首先,第一维直接排序掉。 第二位用树状数组处理。 第三维套上权值线段树。 具体地说,因为我们要支持任何地方的单点修改以及前缀查询,就不得不套上树状数组。 这样,树套树便能 阅读全文
posted @ 2021-04-02 16:00 Troverld 阅读(96) 评论(0) 推荐(0) 编辑
摘要:IV.【模板】二逼平衡树(树套树) 树状数组套权值线段树最好了……nlog2n的复杂度可比nlog3n的什么线段树套平衡树要强一百万倍!其实是我不会写 分析一下操作: 二分出来最大的<k的数后直接权值线段树上查询前缀和。 就是II.Dynamic Rankings。 直接修改。 权值 阅读全文
posted @ 2021-04-02 15:59 Troverld 阅读(72) 评论(0) 推荐(0) 编辑
摘要:III.CF1093E Intersection of Permutations 首先,我们如果令c[i]表示b[i]在数组a中出现的位置, 那么对于一次询问,答案就是c中下标在[l2,r2]\(\)[l1,r1]间的数量。 思路1.树状数组套权值线段树 阅读全文
posted @ 2021-04-02 15:57 Troverld 阅读(50) 评论(0) 推荐(0) 编辑
摘要:II.Dynamic Rankings 树状数组套权值线段树。 正经不带修的方法就是主席树(即一堆权值线段树并一起)。现在带修了,那就把这些主席树拆开,拆成n棵权值线段树,然后用树状数组进行单点修改以及前缀求和,复杂度O(nlog2n)。 代码: #include<bits/stdc++ 阅读全文
posted @ 2021-04-02 15:56 Troverld 阅读(36) 评论(0) 推荐(0) 编辑
摘要:I.CF19D Points 树套树第一题。 思路1.线段树套线段树 因为内外的操作类似,很容易就能想到使用线段树套线段树,然后在线段树上二分来找到答案。 复杂度是O(nlog2n),常数极大,因此被卡了。 代码: #include<bits/stdc++.h> using namespa 阅读全文
posted @ 2021-04-02 15:54 Troverld 阅读(79) 评论(0) 推荐(0) 编辑
摘要:II.[HAOI2012]高速公路 本题已经在我的任务列表里挂了1年多了 我们将这里的“期望”转成“区间中任意两点间距离之和区间中选取两点的方案数。然后,我们考虑使用线段树维护区间中任意两点间距离之和。 在每个节点上,我们维护如下东西: \(s 阅读全文
posted @ 2021-04-02 15:16 Troverld 阅读(42) 评论(0) 推荐(0) 编辑
摘要:XVIII.[PA2017]Banany 心血来潮想开道动态点分治的题练手,然后被折磨了一下午…… 首先,套上点分树是没问题的。那么,怎样维护修改呢? 单点修改无论用什么结构维护都是非常easy的;但是边的修改就不太简单了,因为它涉及到不止一条路径。 我们设当前修改了边 (x,y)。对于点分 阅读全文
posted @ 2021-04-01 19:34 Troverld 阅读(76) 评论(0) 推荐(0) 编辑
摘要:XII.小清新数据结构题 太 清 新 了 话说就我一个人看到这道题后兴冲冲的以为暴力LCT就能过然后发现LCT如果维护子树信息的话只有根节点处的信息是正确的吗(没错,就我一个) 闲话少说,正片开始。 法一:推一种式子,然后LCT/树剖维护 我们设valii节点的值,然后sumi为根 阅读全文
posted @ 2021-04-01 13:04 Troverld 阅读(71) 评论(0) 推荐(0) 编辑
摘要:IX.[BJOI2017]树的难题 debug三天,精神崩溃 论一行if(vis[v[x][r].second]){r++;continue;}忘记加上后所有代码全都莫名其妙TLE且查不出锅的痛苦 首先,我们考虑常规淀粉质。 我们考虑一条路径,它会被(淀粉质的分治根)截成两段。如果我们对于分治树中的 阅读全文
posted @ 2021-04-01 12:56 Troverld 阅读(81) 评论(0) 推荐(0) 编辑
摘要:VII.[HNOI2015]开店 首先,第一种方法便是动态点分治。 我们先考虑忽略年龄限制的情形。 我们考虑正常求一个点到另一个点的距离应该怎么求—— 一般来说,我们会用dis(i,j)=depi+depj2deplca(i,j)对吧? 这个东西相当于将路径划分成两个部分,其中每个 阅读全文
posted @ 2021-04-01 12:49 Troverld 阅读(62) 评论(0) 推荐(0) 编辑
摘要:VI.【模板】点分树 | 震波 我们之前讲过一个叫做淀粉徐的东西,但就跟dfs序一样,把树压成序列,总会损失一些信息。有没有方法能够完整地维护出来淀粉质的信息呢? 还真有。 我们看到在对于某个点淀粉质时,它的所有子树,都会拥有一个下层的分治节点。 我们看到淀粉质的代码: void solve(int 阅读全文
posted @ 2021-04-01 12:47 Troverld 阅读(69) 评论(0) 推荐(0) 编辑
摘要:III.BZOJ3784: 树上的路径 思路1: 淀粉质。用priority_queue维护前m长的路径的长度。用multiset维护点分治时,之前所有子树的路径长度,然后对于新子树中的每一条路径,在multiset中从大往小枚举另一半路径拼一起并尝试加入优先队列。如果加入失败,那么对于这个点, 阅读全文
posted @ 2021-04-01 12:33 Troverld 阅读(43) 评论(0) 推荐(0) 编辑
摘要:XVIII.[八省联考2018]制胡窜 首先,本题parent tree上树上倍增+线段树合并找出每个点的 endpos 集合应该是没得说的。 于是我们现在考虑知道了 enspos 集合以及询问串长度 len 怎么求出答案。 首先,一个正常人稍微想 阅读全文
posted @ 2021-04-01 12:21 Troverld 阅读(60) 评论(0) 推荐(0) 编辑
摘要:XVII.CF666E Forensic Examination 首先,同之前大部分题一样,本题仍然有两种解法。SA解法参见本人的题解。SAM解法见下。 仍然,同之前大部分题一样,本题SAM解法完爆SA——码量、思维难度、复杂度。 首先,考虑把所有东西怼一块跑广义SAM,然后对于询问的原串中某一段区 阅读全文
posted @ 2021-04-01 12:19 Troverld 阅读(61) 评论(0) 推荐(0) 编辑
摘要:XVI.CF700E Cool Slogans 这题有SA和SAM两种做法,但事实证明,本题的SAM做法无论在思维难度还是在代码难度上,都爆踩SA做法。 首先,SA做法可以参见本人的题解。 然后,SAM做法见下。 首先,我们一定可以将每个串砍掉一部分,使得我们所需串中,前一个串必是后一个串的后缀。具 阅读全文
posted @ 2021-04-01 12:18 Troverld 阅读(44) 评论(0) 推荐(0) 编辑
摘要:XV.CF1073G Yet Another LCP Problem 这里记录一下我在思考本题时的一个感悟,即后缀数组与后缀自动机的等价性。 众所周知,SA时有一个常见思路就是针对 height 数组建一棵笛卡尔树。但是,该笛卡尔树,唯一等价于SA针对的串的反串的parent tree。具体可以分别 阅读全文
posted @ 2021-04-01 12:15 Troverld 阅读(76) 评论(0) 推荐(0) 编辑
摘要:XIV.CF1207G Indie Album 听说也可以AC自动机? 首先,我们针对题目中给出的trie树,跑一个广义SAM。然后,考虑我们询问一个串在trie上的某个节点的出现次数,就是询问当我们把此节点及其到根路径上的所有点加入SAM后,parent tree上该点子树中结尾点的数量。于是直接 阅读全文
posted @ 2021-04-01 12:13 Troverld 阅读(41) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示