Problem \(\text{Solution:}\) 考虑用 fhq_treap 来实现这个东西。 每次的新建版本,我们可以新建一个根,并直接利用 merge 和 split 操作在上一个版本上利用信息。 注意 split 和 merge 中都需要新建节点,否则会影响之前版本的结构。 #incl ...
分类:
其他好文 时间:
2021-07-05 17:13:41
阅读次数:
0
Problem \(\text{Solution:}\) 首先发现模数不是质数,这意味着没有逆元可以让我们把除操作变成乘操作。而$x$本身又没有去取模,所以我们应该考虑维护一段连续区间的乘积。 那么删除操作就变成了将某个之前的节点删除。这对于 fhq_treap 是小意思了。 由于是一段有序的操作区 ...
分类:
其他好文 时间:
2021-06-22 18:05:28
阅读次数:
0
平衡树模板题,要求维护一些操作。 插入一个数,删除一个数,查询一个数的排名,查询排名一直的数,找前驱后继。 ...
分类:
其他好文 时间:
2021-05-25 17:46:12
阅读次数:
0
P5350&P5586 序列 P5350&P5586 序列 区间覆盖,区间求和,交换两个区间,区间复制后覆盖,区间加,区间翻转。 可以使用 \(FHQ Treap\) 来解决。 区间翻转,区间加,区间覆盖,区间求和常规操作,标记维护一下就行了,然后区间交换就是相当于 split 两个区间出来再合并就 ...
分类:
其他好文 时间:
2021-04-13 12:10:40
阅读次数:
0
算法原理 $fhq - treap$是一种好用的平衡数,以分裂合并为基本操作,代码简洁优雅,能解决包括序列操作在内的大部分问题,适合初学平衡树的$OIer$们(比如我)学习和掌握。 核心:分裂与合并 分裂时一般传四个参数 \(now\) :当前节点 \(k\) :以权值分裂或者以排名分裂时对两棵树的 ...
分类:
其他好文 时间:
2021-02-01 12:51:28
阅读次数:
0
题目 \(m\) 次区间翻转操作,$1 \leq n,m \leq 100000$ 分析 平衡树模板 于是放上 \(fhq-treap\) 的板子 \(Code\) #include<cstdio> #include<algorithm> #include<ctime> using namespac ...
分类:
其他好文 时间:
2020-12-04 11:21:13
阅读次数:
6
石家庄办证SD哪里〖溦:bzs 25888〗石家庄办理各种证件〖溦/電:151.9786.1308同号〗办.做.各.类.证.件.[快.速◆高.效-专.业◆定.做]-SnapLogic是一个不错的集成平台即服务(iPaaS)工具,可帮助组织获取,维持和增长其客户群。其具备的特征是:它是快速的,多点的, ...
分类:
其他好文 时间:
2020-10-26 10:41:14
阅读次数:
21
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define ls (l[cnt]) #define rs (r[cnt]) const int N = 100005; struct Ftree { int l[ ...
分类:
其他好文 时间:
2020-07-04 21:12:28
阅读次数:
69
完全能代替splay的完美算法! 核心操作:merge int merge(int x,int y) { if(!x||!y) return x|y; if(rnd[x]<rnd[y]) { down(x); rs[x]=merge(rs[x],y); up(x); return x; } else ...
分类:
其他好文 时间:
2020-07-02 21:21:28
阅读次数:
51
数据结构 可持久化平衡树 自己开的可持久化的坑,自己含着泪也要补完≡(▔﹏▔)≡ 【模板】可持久化平衡树 之前刚刚学过fhq_treap 这个数据结构的强大之处:一在于好写好调,码量友好;二便在于便于可持久化 因为普通treap利用旋转来保持时间复杂度,左旋旋,右旋旋,很难维护父子关系,也很难像主席 ...
分类:
其他好文 时间:
2020-06-29 23:00:33
阅读次数:
61