因为是整体加减,所以直接记录在外面。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 0x3f3f3f3f
#define N 1000005
using namespace std;
int sum;
int li,root;
int cnt,size[N],ch[N][],fa[N],n,m,k[N];
void push_up(int x)
{
size[x]=size[ch[x][]]+size[ch[x][]]+;
}
void rotate(int p)
{
int q=fa[p],y=fa[q],x=(ch[q][]==p);
ch[q][x]=ch[p][x^];fa[ch[q][x]]=q;
ch[p][x^]=q;fa[q]=p;fa[p]=y;
if(y)
{
if(ch[y][]==q)ch[y][]=p;
else ch[y][]=p;
}
push_up(q);
return ;
}
void splay(int x)
{
for(int y;y=fa[x];rotate(x))
{
if(fa[y])
{
if((ch[y][]==x&&ch[fa[y]][]==y)||(ch[y][]==x&&ch[fa[y]][]==y))rotate(y);
else rotate(x);
}
}
push_up(x);root=x;
}
void del(int x)
{
splay(x);
if(!ch[x][])
{
root=ch[x][];fa[ch[x][]]=;
}
else if(!ch[x][])
{
root=ch[x][],fa[ch[x][]]=;
}
else
{
int tmp=ch[x][];fa[tmp]=;
while(ch[tmp][])tmp=ch[tmp][];
splay(tmp);ch[tmp][]=ch[x][];fa[ch[x][]]=tmp;
push_up(tmp);
}return ;
}
int find(int x,int kk)
{
//cout<<kk<<endl;
if(size[ch[x][]]+==kk)return k[x];
if(size[ch[x][]]>=kk)return find(ch[x][],kk);
return find(ch[x][],kk-size[ch[x][]]-);
}
void insert(int z)
{
//cout<<z<<endl;
int x=root;size[x]++;
while(ch[x][k[x]<z])x=ch[x][k[x]<z],size[x]++;
ch[x][k[x]<z]=++cnt;k[cnt]=z;size[cnt]=;fa[cnt]=x;splay(cnt);
}
int mn()
{
int tmp=root;while(ch[tmp][])tmp=ch[tmp][];
return tmp;
}
int main()
{
//freopen("out.txt","w",stdout);
int now=;
scanf("%d%d",&n,&m);
cnt=;k[]=inf;sum=;size[]=;root=;
for(int i=;i<=n;i++)
{
char c[];int tmp;
scanf("%s%d",c,&tmp);
if(c[]=='I')
{
if(tmp<m)continue;
else now++,insert(tmp-sum);
}
else if(c[]=='A')
{
sum+=tmp;
}
else if(c[]=='S')
{
sum-=tmp;
while()
{
//cout<<root<<endl;
int u=mn();
if(k[u]+sum<m)
{
li++;
del(u);continue;
}
break;
}
}
else if(c[]=='F')
{
if(tmp>now-li)
{
puts("-1");continue;
}
printf("%d\n",find(root,now-li-tmp+)+sum);
}
}
printf("%d\n",li);
return ;
}

bzoj 1503 splay的更多相关文章

  1. (WA)BZOJ 1503: [NOI2004]郁闷的出纳员

    二次联通门 : BZOJ 1503: [NOI2004]郁闷的出纳员 /* BZOJ 1503: [NOI2004]郁闷的出纳员 考虑这样一个事实 无论是加或减 都是针对全体人员的 那么只需要记录一个 ...

  2. [BZOJ 1503]郁闷的出纳员(fhq treap)

    [BZOJ 1503]郁闷的出纳员 题面 第一行有两个非负整数n和min.n表示下面有多少条命令,min表示工资下界. 接下来的n行,每行表示一条命令.命令可以是以下四种之一: 名称 格式 作用 I命 ...

  3. bzoj 1503郁闷的出纳员(splay)

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 11759  Solved: 4163[Submit][Stat ...

  4. BZOJ 1503: [NOI2004]郁闷的出纳员 splay

    1503: [NOI2004]郁闷的出纳员 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作 ...

  5. BZOJ 1503 郁闷的出纳员(splay)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 题意:给出一个数列(初始为空),给出一个最小值Min,当数列中的数字小于Min时自动 ...

  6. BZOJ 1503: [NOI2004]郁闷的出纳员

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 10526  Solved: 3685[Submit][Stat ...

  7. bzoj 1503

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 12311  Solved: 4399[Submit][Stat ...

  8. bzoj 1269 bzoj 1507 Splay处理文本信息

    bzoj 1269 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1269 大致思路: 用splay维护整个文本信息,splay树的中序遍历即为 ...

  9. BZOJ 1503 郁闷的出纳员(平衡树)(NOI 2004)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作 ...

随机推荐

  1. AWS CLI 中使用S3存储

    登录 通过控制面板, 在S3管理器中创建一个新的bucket 所有AWS服务 -> 安全&身份 -> IAM -> 组, 创建一个新的组, 例如 "s3-user& ...

  2. SQL SERVER的连接方式

    最近在做项目的时候,遇到了SQLSERVER的连接,以前是很模糊的,现在做一个简单的总结. 针对SQL_SERVER,连接指定的方式有两种,一种是Where条件指定方式,另外一种是采用On连指定连接条 ...

  3. OmniPlan文档链接

    https://support.omnigroup.com/documentation/omniplan/mac/3.0/zh/introduction/#introduction

  4. QT 网络编程二(UDP版本)

    QT的UdpSocket接收消息使用原则 第一步:new一个UdpSocket 第二步:调用UdpSocket的bind方法,同时指定端口号 第三步:使用connect将接收消息函数和UdpSocke ...

  5. NOI2018准备Day19

    5天没写. 伸展树  主席树 3到线段树模板题

  6. NOI2018准备Day5

    3个半小时,连看题解带超过了一道二分题.

  7. scala + intellij idea 环境搭建及编译、打包

    大数据生态圈中风头正旺的Spark项目完全是采用Scala语言开发的,不懂Scala的话,基本上就没法玩下去了.Scala与Java编译后的class均可以运行于JVM之上,就好象.NET中F#与C# ...

  8. 自己画WinForm 皮肤包括默认控件

    好久没来博客园,今天捣鼓到现在就是为了把之前的皮肤控件完善好, 之前也看了很多技术文章,大多数都是自己重写系统控件实现换肤,几乎没有像东日的(IrisSkin)控件一样 添加一个组件 把系统的皮肤全换 ...

  9. 移除首页->重回首页

    之前发布了一篇文章<订餐系统之获取淘宝外卖订单>,因为是关于淘宝外卖的,所以文中出现这个词时,都加了链接,还设置了 target='_blank',就是为了让看的人方便点击,查看.后来,博 ...

  10. [HDOJ5442]Favorite Donut(最大表示法)

    嗯……就是最小表示法改一下…… 这题就是把S串当作两个判断同构的串,然后就搞出最大的表示了 然后在反向再做一次 O(n)求最大表示,O(n)判断正反谁大