• 2024-10-26「FHQ_Treap」学习笔记
    一、前言&基本理论来自笔者的肯定:最容易理解且比较好写的平衡树(不过就是常数有点大了),可能是笔者花了较长的时间去理解旋转Treap和Splay的旋转吧()。FHQ不仅比旋转法编码简单,而且能用于区间翻转、移动、持久化等场合。——《算法竞赛》FHQ_Treap的所有操作都只用到了分
  • 2024-10-25[计划] CSP-S2 2024 考前复习
    怎么算空间???复习板子floydcrtecgcd单调队列prim(kruskal求最小生成树)并查集各种写法、复杂度区间加区间和BITBIT注意位置是否会到0FHQ-TreapFHQ-Treap勿把Split_Val和Split_Siz写混;FHQ-Treap记得Split时PushUp注意FHQ-Treap初值问题字符串哈希区间
  • 2024-10-09Treap学习笔记
    Treap(树堆)学习笔记(此处为带旋Treap)Treap简介Treap是一种二叉搜索树,其中,权值val满足二叉搜索树的性质,节点优先级priority满足堆的性质(作用后面会讲到)Treap适用情况因为属于二叉搜索树,所以可以维护二叉搜索树的信息,带旋Treap可以更好地控制树的深度,使得每次操作不至于被
  • 2024-09-02平衡树
    FHQ-Treap概述FHQ-Treap,又名无旋Treap。显然,FHQ-Treap不使用旋转操作来维护平衡,他利用分裂和合并两个操作维护平衡。定义结构体放个代码constintN=1e5+10;inttot,root;structFHQ_Treap{intl,r,val,key,siz;}tr[N];#definelctr[p].l#definerc
  • 2024-08-29[学习笔记] Splay & Treap 平衡树 - 数据结构
    [学习笔记]Splay&Treap平衡树-数据结构Splay树又名伸展树,一种平衡二叉查找树,通过\(\text{Splay}\)操作不断把节点旋到根节点来维护整颗树的平衡。说人话,很玄学的玩意,复杂度是单log级别的。为啥是单log,科学的解释请移步OI-WIKI。不科学的解释就是,通过不断\(\tex
  • 2024-08-21FHQ-Treap
    全码优点:码量短写错了的话,\(TLE,MLE,Wa\)全家桶包含合并操作点击查看代码#include<bits/stdc++.h>#definespeed()ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);#definelllonglong#definelid(rt<<1)#definerid(rt<<1|1)//#defineendl'\n'
  • 2024-08-13随用随取的无旋Treap板子!
    使用说明及注意事项:使用命名空间+结构体进行封装,使用时只需jser::Treap或usingnamespacejser即可。例如:/*way1*/usingnamespacejser;Treaptree;/*way2*/jser::Treaptree;随机数生成采用random_device和mt19937,在某些评测姬上可能不适用,可以换用rand(注意数
  • 2024-07-29「FHQ-Treap —— 码量最小的平衡树」学习笔记
    不同于普通Treap,FHQ-Treap不需要左旋和右旋操作来处理数据。因此FHQ-Treap也称作无旋Treap。FHQ-Treap是基于Split(分裂)和Merge(合并)两种操作的平衡树。其与普通Treap的原理完全不同。一些基础的操作:例如Insert(插入元素)和Delete(删除元素)。对于Insert(插入元素),新建一
  • 2024-07-25浅谈平衡树
    平衡树,是一种数据结构,可以实现一类元素在线性结构中动态变化,基于二叉搜索树,满足二叉搜索树的所有性质。二叉搜索树(BST)二叉搜索树是一种二叉树形结构,它满足以下性质:空树是二叉搜索树。若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。若二
  • 2024-07-14怎么优雅的踩爆 Treap
    在发布了文章Treap学习笔记后我认为我的平衡树能力已经登峰造极了。但是Treap真tmd太难写了,所以我们的czy大佬开发除了一种可以优雅的踩爆Treap的绝佳方案。#include<bits/stdc++.h>usingnamespacestd;intn;structtree{ vector<int>v; voidadd(intx){v.in
  • 2024-07-08FHQ_Treap
    先记个板子#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5;intn;intrt,son[N][2],sz[N],va[N],pri[N],tot;structFHQ{ voidpushup(intx){sz[x]=sz[son[x][0]]+sz[son[x][1]]+1;} intmerge(intx,inty) { if(!x||!y)returnx|y; if
  • 2024-07-05FHQ treap(再见splay------)
    但凡打过平衡树的应该都知道\(\huge{二逼平衡树}\)这道题,抄了两个小时的splay版题解,然后发现了\(\color{maroon}FHQtreap\):$\large\color{green}这是splay$structjjtree{ inlinevoidup(rintx){sz[x]=sz[son[x][0]]+sz[son[x][1]]+cnt[x];} inlineboolso(rintx){retu
  • 2024-07-02平衡樹專題Treap
    前言:题单在此:HL平衡树0701-题单-洛谷|计算机科学教育新生态(luogu.com.cn)平衡树什么是平衡树?首先我们需要知道二叉查找树的内容。二叉查找树(BST:BinarySearchTree)首先,他是一棵二叉树其次,他的左子树的权值<根节点的权值<右子树的权值最后,也是最重要的,他的中序遍历
  • 2024-06-16算法课程笔记——FHQ-Treap(无旋)
    算法课程笔记——FHQ-Treap(无旋)
  • 2024-05-25平衡树 Treap & Splay [学习笔记]
    平衡树\(\tt{Treap}\)&\(\tt{Splay}\)壹.单旋\(\tt{Treap}\)首先了解\(\tt{BST}\)非常好用的东西,但是数据可以把它卡成一条链\(\dots\)于是,我们将\(\tt{Tree}\)与\(\tt{heap}\)(堆)合并,以保证平衡树\(\log\)的深度。具体地,我们可以使用旋转操作实现K8He的图
  • 2024-05-23平衡树 Treap & Splay [学习笔记]
    平衡树\(\tt{Treap}\)&\(\tt{Splay}\)壹.单旋\(\tt{Treap}\)首先了解\(\tt{BST}\)非常好用的东西,但是数据可以把它卡成一条链\(\dots\)于是,我们将\(\tt{Tree}\)与\(\tt{heap}\)(堆)合并,以保证平衡树\(\log\)的深度。具体地,我们可以使用旋转操作实现K8He的图
  • 2024-05-19浅谈 FHQ Treap
    浅谈FHQTreap目录浅谈FHQTreap简单介绍前置操作结构分裂split合并merge一般操作Insertdelete查询排名为\(x\)的数查询\(v\)的排名rank查询\(x\)的前驱precursor查询\(x\)的后继successor版题简单介绍FHQTreap,以下简写为\(fhq\),是一种treap(树堆)的变体,功能
  • 2024-05-032024劳动节北斗课堂总结
    第一天上午讲了数据结构平衡树(Treap)随机的笛卡尔树的期望深度是\(log_{n}\)。合并合并以\(x,y\)为根的\(Treap\)过程若\(x,y\)有一个为空,则返回另一个比较\(x,y\)的随机权值若\(x<y\)则递归合并\(x\)的左儿子和\(y\)。否则返回\(x\)和\(y\)的右儿子
  • 2024-05-01fhq-treap
    一些细节本质是利用合并、分裂实现增、删、查。根据用途分为两类分裂:第一类:当作set一样使用,就是中序遍历就把数字排序了。分裂操作按照权值分裂。如果根\(\lek\),那么左边都要归入\(x\),递归右边,\(x\)换成右边(看还能接上去多少)\(>k\)同理,最后pushup一下。第二
  • 2024-04-27平衡树炫酷科技
    标题是吸引你点进来的Case1LCT的access操作应该可以实现某种区间覆盖的操作(听同学讲的,具体的还待讨论)Case2众所周知,可并堆中左偏树合并是这样写的(记\(dist\)为\(rd\)):merge(A,B)if!A:returnBif!B:returnAifB.val>A.valswap(A,B)A.rs<-m
  • 2024-04-25FHQ Treap
    P3369【模板】普通平衡树前言:平衡树是一种二叉搜索树,通过一些方法来做到快速维护单点或区间信息和快速查询单点或区间信息,其中包括排名、前驱等等。在\(\rmSTL\)库中虽有实现,但是由于封装的太好以及是可持久化数据结构的基础,还是需要学习的。FHQTreap:FHQTreap是一种不
  • 2024-03-29平衡树
    不持续更新。前置知识二叉搜索树又称BST堆其实我也不会FHQ-Treap一般使用小根堆。FHQ-Treap简述FHQ-Treap是一种基于分裂和合并操作的平衡树。它没有旋转,极易上手,非常适合cainiaoshanglu。核心思想我们对于一个点存储两个权值\(a_i,h_i\),其中\(a_i\)满足小根
  • 2024-03-15二叉查找树/堆 /Treap/Spaly树串联分析
    二叉查找树(BST)二叉查找树:中序遍历是一个递增的序列。父节点的左子树的所有结点都比父节点小,父节点右子树的结点比父节点都大。在一颗随机构造的BST上,查找一个元素的时间复杂度位O(logn),但是如果我们有序的插入结点,那么BST的高度将位N,时间复杂度位O(n)。importjava.util.Sc
  • 2024-03-13C++:[NWRRC2015] Concatenation(洛谷)P7050
    题目描述FamousprogrammerGennadylikestocreatenewwords.Onewaytodoitistoconcatenateexistingwords.Thatmeanswritingonewordafteranother.Forexample,ifhehaswords cat and dog,hewouldgetaword catdog,thatcouldmeansomething
  • 2024-03-13课件
    1基础数据结构2基本算法3搜索A*算法4高级数据结构线段树分块与莫队算法简单树上问题二叉搜索树替罪羊树Treap树FHQTreap树Splay树5动态规划6数论与线性代数7组合数学8计算几何9字符串KMP10图论图的存储有向图的连