随笔分类 - 数据结构——树套树&结构套结构
摘要:XLII.[NOI2019] 弹跳 一眼看上去,单点向矩阵连边、最短路,这不是数据结构优化建图是什么? 想了想二维线段树优化建图,发现可以。 于是就写了,内层线段树写的还是可以压缩空间的线段树合并。 然后MLE了。 分代码: #include<bits/stdc++.h> using
阅读全文
摘要:XXXIII.[APIO2019]路灯 实际上本来是在刷CDQ分治的题来着的,但是CDQ分治是众所周知地抽象,所以在碰到三维数点问题时,除非卡空间,否则一律请选择树套树…… 我们可以用 set 来维护连通性。显然,若 这一段的路灯全亮,则所有
阅读全文
摘要:IX.[TJOI2017]不勤劳的图书管理员 我要举报……出题人语文明显不太好…… 首先,这题就是上一题的带权版。 然后,这题带了权后和上一题就不太一样了。 当你交换位置的书后,(默认) 位置在前或在后的书不受影响; 位置在之间,且$val_z\in(val
阅读全文
摘要:VIII.CF785E Anton and Permutation 我们看一下交换以后,哪些逆序对会受到影响。 设交换了位置,它们原本的值是。不妨设。 对于一个位置,在交换后仍然都排在它后面,不受影响; 对于一个位置,$
阅读全文
摘要:VII.[ZJOI2013]K大数查询 这题常卡的我快哭了QaQ 首先,我们仍然考虑树套树。 下标树套权值树(即我们前几题的一贯做法) 我们发现,要在区间树上打上区间添加数的tag,并且用tag树的并集进行二分。 因此最终的结果就是,大区间被分割成个小区间,但是每个小区间的$\log
阅读全文
摘要:VI.[CQOI2011]动态逆序对 这题需要支持查询前缀大于某个值的数量、后缀小于某个值的数量以及在某个地方插入值。 换句话说,我们要支持在以下标为轴,权值为轴的二维平面上动态删点以及询问矩形和。 如果我们把删点的时间看做轴的话,那就是典型的三维偏序。 直接树套树完成。 代码(常
阅读全文
摘要:V.【模板】三维偏序(陌上花开) 树套树比CDQ分治可爱一万倍!!!数据结构什么的最可爱了!!! 那么树套树如何进行三维偏序呢? 首先,第一维直接排序掉。 第二位用树状数组处理。 第三维套上权值线段树。 具体地说,因为我们要支持任何地方的单点修改以及前缀查询,就不得不套上树状数组。 这样,树套树便能
阅读全文
摘要:IV.【模板】二逼平衡树(树套树) 树状数组套权值线段树最好了……的复杂度可比的什么线段树套平衡树要强一百万倍!其实是我不会写 分析一下操作: 二分出来最大的的数后直接权值线段树上查询前缀和。 就是II.Dynamic Rankings。 直接修改。 权值
阅读全文
摘要:III.CF1093E Intersection of Permutations 首先,我们如果令表示在数组中出现的位置, 那么对于一次询问,答案就是中下标在间的数量。 思路1.树状数组套权值线段树
阅读全文
摘要:II.Dynamic Rankings 树状数组套权值线段树。 正经不带修的方法就是主席树(即一堆权值线段树并一起)。现在带修了,那就把这些主席树拆开,拆成棵权值线段树,然后用树状数组进行单点修改以及前缀求和,复杂度。 代码: #include<bits/stdc++
阅读全文
摘要:I.CF19D Points 树套树第一题。 思路1.线段树套线段树 因为内外的操作类似,很容易就能想到使用线段树套线段树,然后在线段树上二分来找到答案。 复杂度是,常数极大,因此被卡了。 代码: #include<bits/stdc++.h> using namespa
阅读全文
摘要:XXII.SP16580 QTREE7 - Query on a tree VII 它来了,它来了!LCT树套树的经典题,它来了! 虽然只是LCT套 std::multiset 而已 这题具体过程同QTREE6,不再赘述。唯一有区别的是,这题需要维护的是虚子树中最大值,不具有可减性。 因此,我们采用
阅读全文
摘要:XIV.[BZOJ3159]决战 你们知道吗!把一行 #define int long long 写在了一行 int 的后面然后 debug 了一整天的崩溃你知道吗!!! 我恨不得罢免了自己! 言归正传。 从某种角度来说,这是我写的第一棵树套树!虽然是邪教般的LCT套splay 首先,除了翻转操作以
阅读全文
摘要:LXXII.[HEOI2016/TJOI2016]序列 说实话我对于这道题应该归到DP还是树套树时曾经纠结了很久 我们回忆一下正牌的LIS: 对于,可以从转移过来。 现在,我们设分别表示位
阅读全文