treap入门题目集合(附模板)

【平衡树总结 Ⅲ】【FHQ Treap】非旋Treap |【CGWR③】| E 闭关了一周,终于可以正面对刚淑芬啦 qwq,刷分成功√ 接下来就好好补题填坑吧… 平衡树总结Ⅲ:FHQ Treap 概述 说 FHQ Treap 前,先来说说 Treap 吧:Treap的结点... 阅读详情

POJ 3481
HDU 5877
BZOJ 1208
BZOJ 3224 Tyvj 1728
BZOJ 1588
        这些题目都很裸,套套模板就能A,所以就放一起了,treap=tree+heap,让数值维持二叉树性质,用随机值维护堆性质(用这个维护树的平衡)


const int N = 100010;
struct Treap{
    int l,r;        //左,右
    int val,dat;    //价值,随机值
    int cnt,sz;   //副本数,子树大小
}t[N];
int tot,root,n,INF = 0x7fffffff;

void init(){tot=0;}
int New(int val){t[++tot].val=val;t[tot].dat=rand();t[tot].l=t[tot].r=0;t[tot].cnt=t[tot].sz=1;return tot;}
void update(int p){t[p].sz=t[t[p].l].sz+t[t[p].r].sz+t[p].cnt;}
void build(){New(-INF); New(INF);root=1,t[1].r=2;update(root);}
void zig(int &p){int q=t[p].l;t[p].l=t[q].r,t[q].r=p,p=q;update(t[p].r),update(p);}
void zag(int &p){int q=t[p].r;t[p].r=t[q].l,t[q].l=p,p=q;update(t[p].l),update(p);}

void Insert(int &p,int val){                //插入
    if(p==0){
        p=New(val);
        return ;
    }
    if(val==t[p].val){
        t[p].cnt++,update(p);
        return ;
    }
    if(val<t[p].val){
        Insert(t[p].l,val);
        if(t[p].dat<t[t[p].l].dat) zig(p);
    }
    else{
        Insert(t[p].r,val);
        if(t[p].dat<t[t[p].r].dat) zag(p);
    }
    update(p);
}

void Remove(int &p,int val){        //删除
    if(p==0) return ;
    if(val==t[p].val){
        if(t[p].cnt>1){
            t[p].cnt--,update(p);
            return ;
        }
        if(t[p].l||t[p].r){
            if(t[p].r==0||t[t[p].l].dat>t[t[p].r].dat)
                zig(p),Remove(t[p].r,val);
            else zag(p),Remove(t[p].l,val);
            update(p);
        }
        else p=0;
        return ;
    }
    val<t[p].val?Remove(t[p].l,val):Remove(t[p].r,val);
    update(p);
}

int GetRankByVal(int p,int val){       //排名(记得减1,因为有-inf)
    if(p==0) return 0;
    if(val==t[p].val) return t[t[p].l].sz+1;//注意这个地方
    if(val<t[p].val) return GetRankByVal(t[p].l,val);
    return GetRankByVal(t[p].r,val)+t[t[p].l].sz+t[p].cnt;
}

int GetValByRank(int p,int rnk){       //排名为rnk的数(rnk记得加1,因为有-inf)
    if(p==0) return INF;
    if(t[t[p].l].sz>=rnk) return GetValByRank(t[p].l,rnk);
    if(t[t[p].l].sz+t[p].cnt>=rnk) return t[p].val;
    return GetValByRank(t[p].r,rnk-t[t[p].l].sz-t[p].cnt);
}

int GetPre(int val){            //前驱
    int ans=1;
    int p=root;
    while(p){
        if(val==t[p].val){
            if(t[p].l>0){
                p=t[p].l;
                while(t[p].r>0) p=t[p].r;
                ans=p;
            }
            break;
        }
        if(t[p].val<val&&t[p].val>t[ans].val) ans=p;
        p=val<t[p].val?t[p].l:t[p].r;
    }
    return t[ans].val;
}

int GetNext(int val){       //后继
    int ans=2;
    int p=root;
    while(p){
        if(val==t[p].val){
            if(t[p].r>0){
                p=t[p].r;
                while(t[p].l>0) p=t[p].l;
                ans=p;
            }
            break;
        }
        if(t[p].val>val&&t[p].val<t[ans].val) ans=p;
        p=val<t[p].val?t[p].l:t[p].r;
    }
    return t[ans].val;
}

从驱动编译到数据传输:RK3588与FPGA的PCIe通信实战解析 本文详细解析了RK3588与FPGA通过PCIe通信的实战过程,涵盖驱动编译、数据传输及性能优化等关键步骤。通过XDMA驱动实现高效DMA传输,适用于视频处理、数据采集等高性能场景,帮助开发者快速掌握嵌入式系统中的PCIe通信技术。 阅读详情

相关推荐

钉钉宜搭低代码开发师高级认证考试题库113题

钉钉宜搭低代码开发师(高级)考试试题题库,多次考试收集整理,判断题,单选题,多选题,排版清晰,查找方便。希望能帮助到大家!!!

qq_40811920的博客 6392

平衡树(Treap模板)

平衡树(二叉搜索树+大根堆版)

北边一颗小星星 583

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

Treap——题目方法总结

一、查询整体区间第K大 && 序列中比 x 小的数的个数 例题:spoj3273.ORDERSET——初始一个空序列,支持插入、删除一个数,查询整个序列中的第K大和整个序列中小于x的数的个数。 难度:** 这是Treap的模版题,操作也都是基本操作,不错的一道模版题,但是spoj实在太慢了...写不好会莫名TLE #include #include #include #d

ALXPCUN的博客 1344

OpenClaw实战四|内容创作全流程AI助理:自动撰稿+智能剪辑+多平台发布,一人顶一个内容团队

AI替代的是「写稿、剪辑、发布」这种流水线工作,真正让你解放出来,去做选题、创意、人设、变现这些高价值的事。OpenClaw这套内容创作全流程AI助理,最大的价值不是「帮你发内容」,而是让一个人,拥有一个内容团队的产能。不管是个人博主、小团队,还是企业新媒体,都能用零代码的方式,快速搭建属于自己的自动化内容矩阵。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 588

STM32F767 GPIO跑马灯工程从零搭建指南

嵌入式开发中,基于HAL库的STM32工程初始化是确保外设可靠运行的基础环节。其核心在于理解芯片时钟树配置原理、GPIO工作模式与硬件电气特性之间的映射关系。正确启用RCC时钟源、合理分配AHB/APB总线分频系数,可保障系统主频稳定;而精准设置推挽输出、上下拉状态及引脚速度,则直接影响LED等基础外设的驱动可靠性。结合STM32CubeMX图形化配置工具,开发者能将寄存器级操作抽象为可视化流程,显著提升工程可追溯性与复用性。本文以STM32F767IGT6和阿波罗开发板为载体,详解从Repository固

weixin_42453228的博客 61

普通平衡树(Treap模板题)

题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入数值x。 删除数值x(若有多个相同的数,应只删除一个)。 查询数值x的排名(若有多个相同的数,应输出最小的排名)。 查询排名为x的数值。 求数值x的前驱(前驱定义为小于x的最大的数)。 求数值x的后继(后继定义为大于x的最小的数)。 注意: 数据保证查询的结果一定存在。 输入格式 第一行为n,表示操作的个数。 接下来n行每行有两个数opt和x,opt表示操作的序号(1<=opt<=6)。 输出

li_wen_zhuo的博客 704

GEE:变异系数法在遥感影像分析中的应用及权重计算

本文介绍了在Google Earth Engine(GEE)平台上基于变异系数法的多指标加权遥感影像分析方法。该方法通过计算每个指标的平均值和标准差,进而计算变异系数来评估指标的变化程度。利用变异系数,我们可以计算每个指标的权重,并将其应用于加权和指数的计算,从而提高遥感影像分析的准确性和可靠性。方法应用于计算Risk-Screening Environmental Indicators (RSEI),并以此为例。

养乐多的博客 2272

P3391 【模板】文艺平衡树(模板题)(fhq treap)

fhq treap 难点在于理解merge函数和split函数,这些通过手算模拟可以很好地抓住要点,其次就是要理解pushdown函数里面的交换结点,正是这个动作转换了区间,还有比较难理解的就是按照merge函数的建树(小根堆)规则可以使树的中序遍历刚刚好就是原序列。 fhq treap: #include <algorithm> #include <cstdio> #include <cstring> #include <iostream> #include

b_b_lai_lai的博客 201

安全监控:人员行为分析_(2).人员行为分析基础理论

人员行为分析是指利用计算机视觉技术对视频中的人类行为进行实时或离线检测、识别和理解的过程。视频采集:通过摄像头等设备获取视频数据。视频预处理:对视频数据进行噪声过滤、图像增强等处理,以便后续分析。特征提取:从视频中提取出与人员行为相关的特征,如人体姿势、动作轨迹等。行为识别:利用机器学习或深度学习模型对提取的特征进行分类,识别出具体的人员行为。行为理解:对识别出的行为进行进一步分析,理解其背后的意图或状态。在人员行为分析中,常用的公开数据集包括UCF101、HMDB51、ActivityNet等。

zhubeibei168的博客 1345

Oracle EBS与SAP数据数据切换至迁移华为MetaERP分析

Oracle EBS到华为MetaERP的数据迁移可采用“表对表复制”思路,因其模块化设计下数据模型标准化、边界清晰。核心业务对象存储在结构明确的主表中,与MetaERP模型兼容度高,便于直接映射。而SAP到MetaERP的迁移则因SAP高度优化的复杂表结构(如簇表/池表)、数据分散冗余、深度依赖配置等特点,无法简单复制,必须采用基于业务对象的迁移方法,通过视图/BAPI提取数据并进行深度转换。两种迁移的本质差异源于源系统的数据模型设计理念不同。

金牌架构师 1378

Treap树的基本操作以及模板题目

选择左旋或右旋是需要进行判断的,要保持平衡树本身性质,将左右节点中val值较大的一个节点旋转上来。通过不断进行左旋或者是右旋将要删除的节点下放到叶节点的位置去。3.找前驱以及后继(找某一个节点的前驱和后继(一定存在))中序遍历依旧是AxByC ,但是x变成了y的父节点。8.比某个数大的最小 (这个数不一定是在树中)获取一个新的节点,其中val值需要用随机数函数实现。更新当前节点的子树计数,上传信息。Treap树里面的节点定义。6.求排名是k的数是哪个。7.比某个数小的最大值。5.求某一个值的排名。

测试 552

基于扩散模型的图像去噪与修复:原理、实现与性能分析【附核心代码】

扩散模型(Diffusion Models)在图像修复、去噪、风格化、超分辨率等领域的应用,展示了其强大的生成能力和灵活性。通过模拟图像逐步加噪声再去噪的过程,扩散模型不仅能够恢复图像的细节,还能生成高质量的图像。本文详细探讨了扩散模型在图像修复和增强中的应用,并通过具体代码示例展示了如何使用扩散模型进行去噪、风格化、图像超分辨率等任务。扩散模型在图像修复中通过逐步去噪修复损坏的区域,在图像去噪中则能够去除图像中的噪声并保留细节;在图像风格化中,扩散模型通过结合目标风格和内容生成富有艺术性的图像;

一键难忘的博客 2929

Treap模板

一个新的Treap板子 先放代码 #include<cstdio> #include<cctype> #include<algorithm> #include<functional> template<typename _Tp,typename _Cmp=std::less<_Tp> > class fhq_treap:_Cmp { public: typedef _Tp Value_type;

qq_42722211的博客 270

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

fhq treap入门

目录一.前言二.原理三.具体实现模板题目一.洛谷P3369:普通平衡树二.洛谷P3391 文艺平衡树 一.前言 这个数据结构早有耳闻.只是一直没学.跟着AgOH学了一波.发现很简单. 二.原理 二叉搜索树之所以不够优秀,是因为存在一些数据能够将二叉搜索树退化成一条链.从而导致平方级的复杂度.那么对于这个缺陷,大佬们想出了很多方法去解决,衍生出了①替罪羊树②有旋/无旋Treap③splay.今天我入门学习的就是无旋treap. Treap之所以能够克服二叉搜索树的缺陷,主要因为它以随机的方式构造二叉搜索树.使

qq_35577488的博客 953

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【模板】带旋Treap(数组实现)

参考题目:LOJ107 解析: 联赛完了统一更所有模板题解析。 指针实现看这里 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define re register #define gc getchar #define pc put...

anlongyi8087的博客 166

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

非旋treap模板

非旋treap模板 struct Treap{ int ls[MAXN],rs[MAXN],siz[MAXN],rd[MAXN]; int val[MAXN]; bool flag[MAXN]; int root,cnt,ltr,mtr,rtr; Treap(){cnt=0;srand(996);} int random(){return rand(...

咸鱼 214

【模板】Treap (模板题:洛谷P3369普通平衡树)

题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数) 求x的后继(后继定义为大于x,且最小的数) 输入输出格式 输入格式: 第一行为n,表示

Dance Of Faith 788

poj1442 Black Box treap

N个数,在插入第B[i]个数之后,查询当前集合中第i小的数是多少。treap模板题... #include #include #include #include #include using namespace std; typedef long long ll; const int maxn=101000; int pre[maxn]; int ch[maxn][2]; int si

Broken Wings 863

「模板」可持久化 HFQ-Treap

老师用的是静态数组的写法,开了很多数组… 其实个人更倾向于 struct 或者用 class 封装起来。 但是鉴于太难打 好...

MachineryCountry的博客 183

【洛谷P1486】郁闷的出纳员【Treap】

题目大意: 题目链接:https://www.luogu.org/problem/P1486 你需要维护一下四个操作: I kI\ kI k:插入一个数字kkk A kA\ kA k:将所有数字增加kkk S kS\ kS k:将所有数字减去kkk F kF\ kF k:查询第kkk大的数字。 注意如果一个数字小于...

stoorz 332

普通平衡树【treap模板】

题目描述 链接 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 xxx 数 删除 xxx 数 ( 若有多个相同的数,因只删除一个 ) 查询 xxx 数的排名 ( 排名定义为比当前数小的数的个数 +1+1+1 ) 查询排名为 xxx 的数 求 xxx 的前驱 ( 前驱定义为小于 xxx ,且最大的数 ) 求 xxx 的后继 ( 后继定义为大于 xxx ,且最小的数 ) 输入格式 第一行为 nnn ,表示操作的个数,下面 nnn 行每行有两个数 opt\text

m0_51864047的博客 241

模板:无旋treap

文章目录前言操作合并 所谓无旋treap,就是不带旋转的treap 前言 现在“理论上”我会四种平衡树了 之前说无旋treap功能弱,是我狗眼看银低了qwq 这玩意区间上该搞的也能搞 而且确实是非常的 好写!! 有点想把这个作为默认项了 呜呜呜朝三暮四肿么办呐 操作 关键是合并和分裂 合并 考虑合并u和v两棵子树 ...

BUG_Creater_jie的博客 184

Treap 维护集合模板

该集合不允许出现重复元素,支持插入一个元素,删除一个元素,查询元素x的排名,以及查询排名为x的元素。

总理同学的编程尝试 446

FHQ-Treap(非旋 Treap) 学习笔记

参考文章 FHQ-Treap 学习笔记 所以我这个学习笔记。。就是抄一遍?因为他讲的太清楚了! 那这篇学习笔记存在的意义是?学习笔记嘛,一方面也是写给自己看的。。 Treap Treap = BST + Heap,什么意思? 一开始每个节点都具有一个权值 val,现在我们给每个节点都增加一个修正值 key,使得 Treap 在关注 val 时是 BST(二叉搜索树),在关注 key 时是 Heap(堆),这个堆需要满足每个节点严格小于所有子树里的儿子(也就是说这里是小根堆)。可以证明,给定一些点的集合,构成

wyy603的博客 749

FHQ_Treap平衡树模板

struct FHQ_Treap { struct fhq_treap { int l,r; int v,rnd; int sizes; }ftr[maxn]; int sizes,root,tmp; void Init() { sizes = root = 0; } ...

maze_illusion的博客 571
上一篇: NEERC 17 G The Great Wall (treap)
下一篇: Codeforces Round #104 (Div. 1) E. Lucky Queries (线段树)
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值