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\ ...
随机推荐
- 移动端 slide拖拽
<html> <head> <meta charset="UTF-8"> <meta name="viewport" ...
- C 标准库基础 IO 操作总结
其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数.输出参数和返回值,接下来才能开始设计具体的实现过程.C 语言标准库提供的接口功能很有限,不像 Pyth ...
- JAVA 创建对象4种方法
java创建对象的几种方式 博客分类: java (1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.refl ...
- MTCNN人脸检测 附完整C++代码
人脸检测 识别一直是图像算法领域一个主流话题. 前年 SeetaFace 开源了人脸识别引擎,一度成为热门话题. 虽然后来SeetaFace 又放出来 2.0版本,但是,我说但是... 没有训练代码, ...
- jjava Date格式是 May 07 17:44:06 CST 2018,怎么插入数据库中的timestamp格式中
首先 我来记录下错误 死在时间格式转换错误手里了 大致就是时间格式转化失败 java代码中的May 07 17:44:06 CST 2018 是这个格式转换为 数据库的 yyyy-MM-dd HH: ...
- Pivotal开源基于PostgreSQL的数据库Greenplum
http://www.infoq.com/cn/news/2015/11/PostgreSQL-Pivotal 近日,Pivotal宣布开源大规模并行处理(MPP)数据库Greenplum,其架构是针 ...
- Android反编译和再打包神器:Apktool
首先推荐一下这东东,官网:https://ibotpeaches.github.io/Apktool/ 安装.使用之类的看官方文档吧,写这个博客主要是mark一下这东西. 这玩意只能供打包党来用,要想 ...
- 与班尼特·胡迪一起拿奖学金(HZNU-2273)
与班尼特·胡迪一起拿奖学金 AC Time Limit: 2 s Memory Limit: 256 MB Description 班尼特·胡迪这学期的体测终于上80分了,当期末考试的 ...
- Ocelot中文文档-流量控制
感谢@catcherwong 的文章激励我最终写出了这个文档 Ocelot支持上游的请求限制,以便您的下游服务不会过载. 此功能是由GitHub上的@geffzhang添加! 非常感谢. 好了,为了让 ...
- 微信小程序-设计指南
基于微信小程序轻快的特点,官方拟定了小程序界面设计指南和建议,可作为小程序开发参考. 友好礼貌 -避免用户使用服务时被周围环境干扰,设计时应减少无关设计对用户的影响,礼貌的向用户提供服务,友好的引导用 ...