#include<bits/stdc++.h>
#define N 100005
using namespace std;
int rt,val[N],lch[N],rch[N],pro[N],sz[N],cnt;
int rnd()
{
static int sd=4234;
return sd*=3423;
}
int node(int v)
{
val[++cnt]=v;
pro[cnt]=rnd();
sz[cnt]=1;
return cnt;
}
void update(int t)
{
sz[t]=sz[lch[t]]+sz[rch[t]]+1;
}
void split(int t,int v,int & a,int & b)
{
if(!t)
{
a=b=0;
return;
}
if(v<=val[t])
{
b=t;
split(lch[t],v,a,lch[b]);
}
else
{
a=t;
split(rch[t],v,rch[a],b);
}
update(t);
}
int merge(int a,int b)
{
if(!(a&&b))
{
return a+b;
}
if(pro[a]<pro[b])
{
lch[b]=merge(a,lch[b]);
update(b);
return b;
}
else
{
rch[a]=merge(rch[a],b);//
update(a);
return a;
}
}
int find(int k)
{
int t=rt;
while(k!=sz[rch[t]]+1)
{
if(k<=sz[rch[t]]) t=rch[t];
else k-=sz[rch[t]]+1, t=lch[t];
}
return val[t];
}
int main()
{
int n,mn,x,y,z,o=0,ans=0;
char s[10];
scanf("%d%d",&n,&mn);
while(n--)
{
scanf("%s%d",s,&x);
if(s[0]=='A') o-=x;
else if(s[0]=='S') o+=x, split(rt,o+mn,y,rt), ans+=sz[y];
else if(s[0]=='I') if(x>=mn) split(rt,x+o,y,z), rt=merge(merge(y,node(x+o)),z); else;
else if(s[0]=='F') printf("%d\n",sz[rt]>=x ? find(x)-o : -1);
}
printf("%d\n",ans);
}
相关推荐
非旋treap线段树
指针构建非旋treap,代替线段树,可支持持久化,luogu3372可过.
不需要旋转,却能力压群雄的数据结构——非旋Treap 看完还不会你打我
非旋Treap讲解 Treap,一种平衡树。作为一棵平衡树,一定是遵从着某种原则,使得这棵树尽量的接近完全二叉树。除了二叉搜索树都具备的性质——左子树 ≤ 根 ≤ 右子树,顾名思义,Treap = tree+heap。这时他的特殊性质就飘出水面了——heap。 有一个需要慢慢理解的东西,我觉得是本文最重要的——二叉搜索树中顺次排列所参考的参数是灵活的,谁说非要按数值??有的题你就得用下
史上最简单的平衡树——无旋Treap.pdf
史上最简单的平衡树——无旋Treap.pdf
【平衡树——非旋treap】笔记
无
RPN 解析
RPN全称是Region Proposal Network,Region Proposal的中文意思是“区域选取”,也就是“提取候选框”的意思,所以RPN就是用来提取候选框的网络; 1. RPN的意义 RPN第一次出现在世人眼中是在Faster RCNN这个结构中,专门用来提取候选框,在RCNN和Fast RCNN等物体检测架构中,用来提取候选框的方法通常是Selective Se
别再搞混了!用示波器实测SVPWM:相电压、线电压、端电压波形到底长啥样?(附TI/ST官方笔记解读)
本文详细解析了SVPWM波形实测中的相电压、线电压和端电压的区别与测量技巧,结合TI/ST官方笔记,揭示了马鞍形波形的形成原理及常见误区。通过示波器实测案例,帮助电力电子工程师准确理解并应用这些关键概念,提升电机控制系统的调试效率。
非旋Treap详解
(入门请按顺序一边做例题一边看下去,题目之间还有东西)非旋Treap 平衡树的一种个人认为是最好用的平衡树,第一支持可持久化,第二代码短,第三操作方法直观下面看平衡树基础的操作:您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)查询排名...
WGS-84 ECEF ENU 坐标系学习记录
地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。 一、 几种坐标系 地心地固直角坐标系(ECEF)坐标系 其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿...
非旋treap (fhq treap)
平衡树 非旋treap fhq treap
如何构建高质量的 QA 问答知识库
NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从
避坑指南:处理A股通达信分时数据转日K线时,你可能会遇到的3个时间戳问题
本文针对量化交易中处理A股通达信分时数据转日K线时的常见时间戳问题,提供了专业解决方案。重点解析了午休时段处理、Pandas重采样参数设置及CSV读取时的日期解析陷阱,帮助开发者避免数据预处理错误,提升策略回测准确性。适用于Python量化交易开发者。
非旋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(...
FastAPI + React:现代 Web 前后端分离开发的全栈实践指南
• 部署:CI/CD 双流水线,前端 push → GitHub Actions → Cloudflare Pages;• 后端:分层结构 routers → services → repositories → models,单测覆盖率 90 %。• 接口缓存:Redis + FastAPI Depends 实现接口级缓存,读 QPS 提升至 5 k。• 前端:BFF 由 React Query 代理,统一缓存、重试、分页。GET /items/{id} 详情。,前端同学无需等 Mock 即可联调。
非旋treap学习小记
说在前面 搁了很久的坑,终于遇到题目可以学一发。 听说这玩意除了LCT,几乎完爆同是维护平衡树的splay,好像LCT也可以用treap实现 Treap 顾名思义就是Tree+Heap,即树堆,既有二叉查找树的性质也有堆的性质,通常利用中序遍历的顺序和堆的高度为logloglog来解决许多问题,属于平衡树的一类。 本质上就是笛卡尔树,每个点有两个权值val,keyval,keyval,key,va...
seurat v5更新及样本整合方法
1 Seurat 对象和 Assay 类发生了变化:支持更多种类的检测和数据类型,包括磁盘上的矩阵。引入了分层结构来存储数据,例如原始计数、标准化数据和 z 得分/方差稳定数据。可以使用 $ 访问器或 LayerData 函数来访问数据。现有的 Seurat v4 函数和工作流程仍可在 v5 中使用。2 整合工作流程发生了变化:简化了整合流程,提高了速度和内存效率。整合结果与 v4 工作流程略有不同,但用户仍可在 v5 中运行 v4 整合工作流程。
我的世界模组开发——前言
避坑:在开发过程中一定不要过分依赖AI,虽说现在的人工智能很厉害,但是也有很大的弊端,很多AI生成的代码错误百出,还得自己修改,而且像deepseek这种AI的训练数据还停留在一年前,给出的maven仓库地址都是过时的甚至是错误的,开发模组就是要多学习,多看源码,这样开发模组的水平才能越来越高。总而言之,build.gradle文件在我的世界Forge模组开发中扮演了重要的角色,它定义了项目的构建过程、依赖关系和编译选项,为开发者提供了灵活而强大的构建工具。开发工具推荐使用idea,因为可以使用通灵义码。
非旋Treap
非旋Treap ->模板地址 (为便于理解,以下演示代码均使用数组版) 概述 非旋Treap是一种按照堆的原理以随机权值来维护平衡树平衡的平衡树,在一般情况下,非旋Treap趋于平衡,但不稳定。非旋Treap的基本操作少,实现简单,作用范围广,基本可以实现Splay所支持的操作 (节点压缩的Treap请跳转,此篇博客为基本操作和使用) (此博客不包含可持久化Treap,可持久化请跳转) 平衡...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
【模板】非旋Treap
非旋Treap的结构和普通Treap一致,用每个点的随机key值维护树的平衡性。与普通Treap不同的是,非旋Treap维护堆的性质不是通过Rotate操作,而是用Split和Merge两个操作来保证堆的性质不受破坏。 Split和Merge类似可并堆的递归操作。 Split时将一个树拆成两个,传一个树根的指针为参数,返回两个根的指针;Merge时将两个树合成一个,传两个树根的指针为参数,返回
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
非旋Treap 学习笔记
今天学习了一下非旋TreapTreap 听说效率很高而且可持久化(一脸懵逼QAQQAQ) 非旋Treap主要是两个操作splitsplit和mergemerge 下面简单描述一下(得先会TreapTreap啊 ) valval:点的值 keykey:randrand的值 splitsplit : 就是我们把原TreapTreap拆成两个TreapTreap x,y x,y 比如以valu
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
非旋Treap的區間翻轉(文藝平衡樹)
前言 在學習這一節之前顯然要先會非旋Treap的基本操作 Split和MergeSplit和MergeSplit和Merge就可以了 正題 首先,我們用Treap的中序遍曆來代表現在的數列 顯然翻轉區間相當於交換子樹 同時值得注意的是堆的性質不會影響到樹的中序遍曆(這個自己要想一想) 我們在之前強調Merge(a,b)Merge(a,b)Merge(a,b)的大小問題,在這裡只要...
非旋Treap学习
非旋Treap 好东西!!!从疯狂‘赚’的Treap到不‘赚’,Treap付出了时间的代价,但减少了代码的长度多么重要的一点呀!!!感谢神FHQ(orz)发明了这个数据结构。看过冗长的Treap后,再来打非旋Treap,是如此的释然。非旋Treap最大的优点就是代码短,方便实现,支持操作多。今天,来讲讲一种二分查找树非旋Treap。 非旋Treap最重要的操作是split(分裂)与merge(...
非旋Treap及其可持久化
平衡树这种东西,我只会splay。splay比较好理解,并且好打,操作方便。 我以前学过SBT,但并不是很理解,所以就忘了怎么打了。 许多用平衡树的问题其实可以用线段树来解决,我们真正打平衡树的时候一般都是维护序列之类的。 维护序列时,splay特别方便,所以一般情况下打splay就好了。其它的平衡树也可以,可是如果见到翻转操作的时候,那些平衡树就会崩(至少我不知道那些平衡树有什么可以翻转的做法)...
没事找事写算法(2)---非旋treap
开始扯淡 代码 用处 例题 BZOJ3223 洛谷3835 开始扯淡 今天才会非旋treap,我好弱(然而都要期末考试了,我还在颓。)解释都在代码里。主要就是用merge和split两个操作维护堆性质。如果理解旋转treap,那么非旋treap应该很好理解。 代码 核心操作merge和split的代码 Node FhqTreap :: split ( int...
BZOJ3224 普通平衡树 [非旋Treap学习笔记]
相比其他平衡树,非旋Treap看起来更加简洁,而且也去掉了玄学的rotate,并加入了merge(合并),split(分裂) 我们看一下非旋Treap的基本操作 1.split(分裂) 分裂操作是按照权值的大小,将一棵树分裂成<=val和>val两棵树,这样可以实现许多操作 inline void split(int now,int k,int &x,int &...
743



被折叠的 条评论
为什么被折叠?



