BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树
BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树
Description
Input
Output
Sample Input
I 60
I 70
S 50
F 2
I 30
S 15
A 5
F 1
F 2
Sample Output
20
-1
2
分析:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 200050 int ls[N*18],rs[N*18],t[N*18],root=1;
int n,nowmin,add,tot=1;
char s[10];
bool tag[N*18]; void insert(int l,int r,int x,int &p){
if(!p)p=++tot;
if(l==r){
t[p]++;return ;
}
int mid=l+r>>1;
if(tag[p]){
tag[p]=0;
if(!ls[p])ls[p]=++tot;
if(!rs[p])rs[p]=++tot;
t[ls[p]]=t[rs[p]]=0;
tag[ls[p]]=tag[rs[p]]=1;
}
if(x<=mid)insert(l,mid,x,ls[p]);
else insert(mid+1,r,x,rs[p]);
t[p]=t[ls[p]]+t[rs[p]];
} void update(int l,int r,int x,int y,int &p){
if(!p)p=++tot;
if(x<=l&&y>=r){
tag[p]=1;
t[p]=0;return ;
}
int mid=l+r>>1;
if(tag[p]){
tag[p]=0;
if(!ls[p])ls[p]=++tot;
if(!rs[p])rs[p]=++tot;
t[ls[p]]=t[rs[p]]=0;
tag[ls[p]]=tag[rs[p]]=1;
}
if(x<=mid)update(l,mid,x,y,ls[p]);
if(y>mid)update(mid+1,r,x,y,rs[p]);
t[p]=t[ls[p]]+t[rs[p]];
} int getxfromrank(int l,int r,int x,int p){
if(l==r)return l;
int mid=l+r>>1;
if(tag[p]){
tag[p]=0;
if(!ls[p])ls[p]=++tot;
if(!rs[p])rs[p]=++tot;
t[ls[p]]=t[rs[p]]=0;
tag[ls[p]]=tag[rs[p]]=1;
}
if(x<=t[ls[p]])return getxfromrank(l,mid,x,ls[p]);
else return getxfromrank(mid+1,r,x-t[ls[p]],rs[p]);
} int main(){
scanf("%d%d",&n,&nowmin);
int i,j,x,now=0;
for(i=1;i<=n;i++){
scanf("%s%d",s,&x);
if(s[0]=='I'){
if(x-add<nowmin)continue;
now++;
insert(-N,N,x-add,root);
}else if(s[0]=='A'){
add+=x;
nowmin-=x;
}else if(s[0]=='S'){
add-=x;
nowmin+=x;
update(-N,N,-N,nowmin-1,root);
}else{
if(x>t[1]){
puts("-1");continue;
}
printf("%d\n",getxfromrank(-N,N,t[1]-x+1,root)+add);
}
}
printf("%d\n",now-t[1]);
}
BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树的更多相关文章
- BZOJ_2161_布娃娃_权值线段树
BZOJ_2161_布娃娃_权值线段树 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是 ...
- BZOJ_3685_普通van Emde Boas树_权值线段树
BZOJ_3685_普通van Emde Boas树_权值线段树 Description 设计数据结构支持: 1 x 若x不存在,插入x 2 x 若x存在,删除x 3 输出当前最小值,若不存 ...
- B20J_2733_[HNOI2012]永无乡_权值线段树合并
B20J_2733_[HNOI2012]永无乡_权值线段树合并 Description:n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到 n来表示.某些 ...
- [bzoj2733][HNOI2012]永无乡_权值线段树_线段树合并
永无乡 bzoj-2733 HNOI-2012 题目大意:题目链接. 注释:略. 想法: 它的查询操作非常友善,就是一个联通块内的$k$小值. 故此我们可以考虑每个联通块建一棵权值线段树. 这样的话每 ...
- [jdoj1258]野生动物园(change by panxf)_权值线段树_组合数
人品计算 题目大意:n个数的a序列,m组询问.每次询问给出T,A,B,K.求在a序列的[A,B]的位置之内的K小值P,的$C_{T}^{P \% T} \% 10111$. 注释:每组询问保证区间只相 ...
- 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树
经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...
- BZOJ-1563-郁闷的出纳员(权值线段树)
偏移量要考虑清楚. #include <bits/stdc++.h> using namespace std; const int N=4e5+10; const int BASE=1e5 ...
- bzoj 1503: [NOI2004]郁闷的出纳员 -- 权值线段树
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...
- P1486 [NOI2004]郁闷的出纳员[权值线段树]
权值线段树. 我们只用维护一个人是否存在,以及他当前排名,而不关心工资的具体值,这个可以直接算. 不难发现,如果不考虑新的员工,所有员工的工资的差值是不变的. 而加进来一个新的员工时,其工资为\(x\ ...
随机推荐
- Python的lambda
if else 可以用简单的三元运算符表示 if 1 == 1: name = 'wupeiqi' else: name = 'alex' --> name = 'wupeiqi' if 1 = ...
- 利用LinkedHashMap实现简单的缓存
update1:第二个实现,读操作不必要采用独占锁,缓存显然是读多于写,读的时候一开始用独占锁是考虑到要递增计数和更新时间戳要加锁,不过这两个变量都是采用原子变量,因此也不必采用独占锁,修改为读写锁. ...
- HashMap 实现原理
深入Java集合学习系列:HashMap的实现原理 参考文献 引用文献:深入Java集合学习系列:HashMap的实现原理,大部分参考这篇博客,只对其中进行稍微修改 自己曾经写过的:Hashmap ...
- git无法添加文件夹
如标题所示,在webapp下面创建了个空的pages文件夹,想着先提交一下,无奈怎么都提交不了,后来试着在文件夹下面随便添加了个文件就可以提交了, 也不知道是什么原因.
- windows下编译安装BOOST
boost的编译和使用,经过搜集资料和总结,记录成文.感谢文后所列参考资料的作者. 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/ ...
- JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
本文主要记录一下JBOSSAS 5.x/6.x 反序列化命令执行漏洞的测试过程 仅供学习 文中利用到漏洞环境由phith0n维护: JBoss 5.x/6.x 反序列化漏洞(CVE-2017-1214 ...
- spring的简单入门
spring是一个轻量级的JavaEE解决方案,是众多优秀设计模式的整合.spring的核心是:(工厂)容器 1.设计模式:解决一些特定问题的经典代码.共有23中设计模式(工厂,单例,代理,适配,装饰 ...
- mysql-索引、关系、范式
索引 几乎所有的索引都是建立在字段之上 索引:系统根据某种算法,将已有的数据(未来可能新增的数据也算),单独建立一个文件,这个文件能够快速的匹配数据,并且能够快速的找到对应的表中的记录 索引意义 能够 ...
- UML语言中五大视图和九种图形纵览
UML语言纵览 视图 UML语言中的视图大致分为如下5种: 1.用例视图.用例视图强调从系统的外部参与者(主要是用户)的角度看到的或需要的系统功能. 2.逻辑视图.逻辑视图从系统的静态结构和动态行为角 ...
- CentOS 6 安装Hadoop集群
hadoop2.6.4安装包(链接:https://pan.baidu.com/s/15qHpdoLBQHP4HdxOJzNcsg 密码:5hel) 1.准备Linux环境 1.0先将虚拟机的网络模式 ...