洛谷P1486 [NOI2004]郁闷的出纳员
Code:
#include<cstdio>
#include<algorithm>
using namespace std;
struct Node{
int s,val,tag,v;
Node *ch[2];
Node(int u){
s=1,val=1,tag=0,v=u;
ch[0]=ch[1]=NULL;
}
int cmp(int x,int ty){
if(ty==0){
if(x<v)return 0;if(x==v)return -1;return 1;
}
else{
int lsize=ch[0]==NULL?0:ch[0]->s;
if(x<=lsize)return 0;if(x<=lsize+val)return -1;return 1;
}
}
int ls(){if(ch[0]==NULL)return 0;return ch[0]->s;}
void maintain(){
s=val;
if(ch[0]!=NULL)s+=ch[0]->s;
if(ch[1]!=NULL)s+=ch[1]->s;
}
void push_down(){
if(tag!=0){
if(ch[0]!=NULL)ch[0]->tag+=tag;
if(ch[1]!=NULL)ch[1]->tag+=tag;
v+=tag,tag=0;
}
}
};
void rotate(Node* &o,int d){
Node *k=o->ch[d^1];o->ch[d^1]=k->ch[d];k->ch[d]=o;
o->maintain();k->maintain();o=k;
}
void splay(Node* &o,int x,int ty){
o->push_down();
int d=o->cmp(x,ty);
if(ty==1&&d==1)x-=o->ls()+o->val;
if(d!=-1){
Node *p=o->ch[d];
p->push_down();
int d2=p->cmp(x,ty);
if(ty==1&&d2==1)x-=p->ls()+p->val;
if(d2!=-1){
splay(p->ch[d2],x,ty);
if(d==d2)
rotate(o,d^1);
else
rotate(o->ch[d],d2^1);
}
rotate(o,d^1);
}
}
void insert(Node* &o,int x){
if(o==NULL){
o=new Node(x);return;
}
o->push_down();
int d=o->cmp(x,0);
if(d==-1){
++(o->val);++(o->s);return;
}
insert(o->ch[d],x);
o->maintain();
}
int minn;
void qianqu(Node *o,int k){
if(o==NULL)return;
o->push_down();
int d=o->cmp(k,0);
if(d<1)
qianqu(o->ch[0],k);
else{
minn=max(minn,o->v);
qianqu(o->ch[1],k);
}
}
Node *head;
int main()
{
int n,minv,cnt_leave=0;
scanf("%d%d",&n,&minv);
for(int i=1;i<=n;++i)
{
char A[4];int k;
scanf("%s",A);scanf("%d",&k);
if(A[0]=='I'){
if(k>=minv){
insert(head,k);
splay(head,k,0);
}
//else ++cnt_leave;
}
if(A[0]=='A'&&head!=NULL)head->tag+=k;
if(A[0]=='S'&&head!=NULL){
head->tag-=k;minn=-1000000;
qianqu(head,minv);
if(minn!=-1000000){
splay(head,minn,0);
cnt_leave+=head->ls()+head->val;
if(head->ch[1]!=NULL)head=head->ch[1];
else head=NULL;
}
}
if(A[0]=='F'){
int tot=head==NULL?0:head->s;
if(k>tot)printf("-1\n");
else{
splay(head,tot-k+1,1);
printf("%d\n",head->v);
}
}
}
printf("%d\n",cnt_leave);
return 0;
}
洛谷P1486 [NOI2004]郁闷的出纳员的更多相关文章
- 洛谷P1486 [NOI2004]郁闷的出纳员 [STL,平衡树]
题目传送门 郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反 ...
- 洛谷 P1486 [NOI2004]郁闷的出纳员【Treap】题解+AC代码
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- 洛谷P1486 [NOI2004]郁闷的出纳员(splay)
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- 洛谷 P1486 [NOI2004]郁闷的出纳员
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- 洛谷.1486.[NOI2004]郁闷的出纳员(Splay)
题目链接 /* BZOJ1503: 3164kb 792ms/824ms(新建节点) 洛谷 : 3.06mb 320ms/308ms(前一个要慢wtf 其实都差不多,但前者好写) 四种操作: A:所有 ...
- 【洛谷P1486】郁闷的出纳员
题目大意:维护一个平衡树,支持插入一个数,删除小于一个值的所有数,K 大值查询,每个节点权值加减一个数. 题解:所有节点权值加减操作可以考虑直接维护一个全局标记,删除小于一个值的所有数字为一个二分的过 ...
- P1486 [NOI2004]郁闷的出纳员
P1486 [NOI2004]郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷 ...
- Luogu P1486 [NOI2004]郁闷的出纳员(平衡树)
P1486 [NOI2004]郁闷的出纳员 题意 题目描述 \(OIER\)公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作 ...
- 洛谷$P$1486 郁闷的出纳员 $[NOI2004]$ $splay$
正解:$splay$ 解题报告: 传送门! 依然先考虑要呲呲些什么操作鸭$QwQ$ 其实就只要一个删除区间,一个查询第$k$大,还一个插入就欧克? 删除区间的话直接旋转下根什么的然后直接把子树删了就好 ...
随机推荐
- spring-boot 访问时,加与不加项目名分析
众所周知,springboot非常便捷,可以简化项目开启步骤,加快开发进度. 很多新手也许都遇到过这样一个问题,在以往的springMvc项目里,大家伙都是把打的war放在tomcat中运行,下意识的 ...
- 修改oracle数据库时间
1.修改前需要先停止 oracle 数据库服务 2.修改 oracle 数据库所在的服务器时间 3.再次启动 oracle 数据库,即可 以上就是小编修改 oracle 数据库的时间,修改完之后,其他 ...
- 【Educational Codeforces Round 53 (Rated for Div. 2) C】Vasya and Robot
[链接] 我是链接,点我呀:) [题意] [题解] 如果|x|+|y|>n 显然.从(0,0)根本就没法到(x,y) 但|x|+|y|<=n还不一定就能到达(x,y) 注意到,你每走一步路 ...
- (25)Spring Boot使用自定义的properties【从零开始学Spring Boot】
spring boot使用application.properties默认了很多配置.但需要自己添加一些配置的时候,我们应该怎么做呢. 若继续在application.properties中添加 如: ...
- hdu 1568关于斐波那契数列的公式及其思维技巧
先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c); 假设给出一个数10234432,那么log10(10234432)=log10(1.023 ...
- ajax传对象或者数组到后端
ajax是无法直接传送对象或者数组,有些人自己处理的话,能够把数据依照自己的标准连接成一个字符串,然后到后端处理.可是数据的不确定性.导致有可能会出错.并且麻烦 事实上有开源的包,能够直接解释成jso ...
- bzoj3931【CQOI2015】网络吞吐量
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 853 Solved: 381 [Submit][id= ...
- sqlalchemy.orm.exc.flusherror:错误解决
使用sqlalchemy创建model 初次代码: class UserModel(db.Model): __tablename__ = "users" id = db.Colum ...
- 关于View的ScrollTo, getScrollX 和 getScrollY
下载地址:源代码 当利用 Scroller 去滑动屏幕或者扩展 ScrollView 的时候,总是会用到 getScrollX 和 getScrollY 去获取当前View 滑动到的位置,那么getS ...
- 51-nod -1284 2 3 5 7的倍数
1284 . 2 3 5 7的倍数 基准时间限制:1 秒 空间限制:65536 KB 分值: 5 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数. 比如N = 10,仅仅有1不是2 3 ...