随笔分类 -  数据结构——树套树&结构套结构

摘要:XLII.[NOI2019] 弹跳 一眼看上去,单点向矩阵连边、最短路,这不是数据结构优化建图是什么? 想了想二维线段树优化建图,发现可以。 于是就写了,内层线段树写的还是可以压缩空间的线段树合并。 然后MLE了。 88 分代码: #include<bits/stdc++.h> using 阅读全文
posted @ 2021-04-02 23:11 Troverld 阅读(56) 评论(0) 推荐(0) 编辑
摘要:XXXIII.[APIO2019]路灯 实际上本来是在刷CDQ分治的题来着的,但是CDQ分治是众所周知地抽象,所以在碰到三维数点问题时,除非卡空间,否则一律请选择树套树…… 我们可以用 set 来维护连通性。显然,若 [l,r] 这一段的路灯全亮,则所有 a,b[l,r+1] 阅读全文
posted @ 2021-04-02 17:09 Troverld 阅读(100) 评论(0) 推荐(0) 编辑
摘要:IX.[TJOI2017]不勤劳的图书管理员 我要举报……出题人语文明显不太好…… 首先,这题就是上一题的带权版。 然后,这题带了权后和上一题就不太一样了。 当你交换位置x,y的书后,(默认x<y) 位置在x前或在y后的书不受影响; 位置在x,y之间,且$val_z\in(val 阅读全文
posted @ 2021-04-02 16:08 Troverld 阅读(53) 评论(0) 推荐(0) 编辑
摘要: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 阅读(46) 评论(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 阅读(94) 评论(0) 推荐(0) 编辑
摘要:IV.【模板】二逼平衡树(树套树) 树状数组套权值线段树最好了……nlog2n的复杂度可比nlog3n的什么线段树套平衡树要强一百万倍!其实是我不会写 分析一下操作: 二分出来最大的<k的数后直接权值线段树上查询前缀和。 就是II.Dynamic Rankings。 直接修改。 权值 阅读全文
posted @ 2021-04-02 15:59 Troverld 阅读(71) 评论(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 阅读(78) 评论(0) 推荐(0) 编辑
摘要:XXII.SP16580 QTREE7 - Query on a tree VII 它来了,它来了!LCT树套树的经典题,它来了! 虽然只是LCT套 std::multiset 而已 这题具体过程同QTREE6,不再赘述。唯一有区别的是,这题需要维护的是虚子树中最大值,不具有可减性。 因此,我们采用 阅读全文
posted @ 2021-03-31 16:32 Troverld 阅读(34) 评论(0) 推荐(0) 编辑
摘要:XIV.[BZOJ3159]决战 你们知道吗!把一行 #define int long long 写在了一行 int 的后面然后 debug 了一整天的崩溃你知道吗!!! 我恨不得罢免了自己! 言归正传。 从某种角度来说,这是我写的第一棵树套树!虽然是邪教般的LCT套splay 首先,除了翻转操作以 阅读全文
posted @ 2021-03-31 16:15 Troverld 阅读(77) 评论(0) 推荐(0) 编辑
摘要:LXXII.[HEOI2016/TJOI2016]序列 说实话我对于这道题应该归到DP还是树套树时曾经纠结了很久 我们回忆一下正牌的LIS: 对于j<i  ajaif[i]可以从f[j]转移过来。 现在,我们设mxi,mni分别表示位 阅读全文
posted @ 2021-03-30 16:54 Troverld 阅读(53) 评论(0) 推荐(0) 编辑

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