bzoj1503郁闷的出(cheng)纳(xu)员
好痛苦,,,WA了不知道多少遍
错的服了,,,
如果某员工的初始工资低于工资下界,他将立刻离开公司
我也不知道是我语文有问题还是题目有毒,反正这个东西好像不应该算在离开公司的总人数的答案里。。。
让我一个人静静。。。。
#include <cstdio>
using namespace std;
int son[][],father[],size[],val[],cnt[],n,i,now,min,x,y,rt,top,ans,m;
char ch[];
void newnode(int &x,int fa,int data){
x=++top;
father[x]=fa;
val[x]=data;
size[top]=;
son[x][]=son[x][]=;
}
void rot(int x,int k){
int y=father[x];
son[y][!k]=son[x][k];
father[son[x][k]]=y;
father[x]=father[y];
son[father[y]][son[father[y]][]==y]=x;
son[x][k]=y;
father[y]=x;
size[x]=size[y];
size[y]=size[son[y][]]+size[son[y][]]+;
}
void rots(int x,int g){
while((y=father[x])!=g){
if(father[father[x]]==g) rot(x,son[father[x]][] == x);
else
{
int y=father[x],z=father[y],f=(son[z][]==y);
if(son[y][f]==x)rot(x,!f);else rot(y,f);
rot(x,f);
}
}
if(!g) rt=x;
}
void ins(int a){
int x=rt;
if (!rt){
rt=++top;val[rt]=a;
son[rt][]=son[rt][]=;
size[rt]=;
}
else{
while(son[x][val[x]<a]) {size[x]++;x=son[x][val[x]<a];}
size[x]++;
newnode(son[x][val[x]<a],x,a);
rots(son[x][val[x]<a],);
}
}
void del(int a,int x,int fa){
if (!x)return;
if (val[x]<a){
if (x==rt) rt=son[x][];
father[son[x][]]=fa;
son[fa][x==son[fa][]]=son[x][];
del(a,son[x][],fa);
now+=size[son[x][]]+;ans+=size[son[x][]]+;
}else {del(a,son[x][],x);}
size[x]=size[x]-now;
}
int find(int k,int x){
if(k<=size[son[x][]])return find(k,son[x][]);
if(k==size[son[x][]]+)return val[x]-min+m;
return find(k-size[son[x][]]-,son[x][]);
}
int main(){
scanf("%d%d",&n,&m);
for (i=;i<=n;i++){
scanf("%s%d",&ch,&x);
if (ch[]=='I')if (x>=m)ins(x-m+min);
if (ch[]=='A')min-=x;
if (ch[]=='S'){min+=x;now=;del(min,rt,);}
if (ch[]=='F')if (x>size[rt]) printf("-1\n");else printf("%d\n",find(size[rt]-x+,rt));
}
printf("%d\n",ans);
}
被卡题意的感觉爽翻了。。。
bzoj1503郁闷的出(cheng)纳(xu)员的更多相关文章
- [No000033]码农网-如何锻炼出最牛程序员的编码套路
最近,我大量阅读了Steve Yegge的文章.其中有一篇叫"Practicing Programming"(练习编程),写成于2005年,读后令我惊讶不已: 与你所相信的恰恰相反 ...
- bzoj1503 郁闷的出纳员
Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经 ...
- [BZOJ1503]郁闷的出纳员(Splay)
Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...
- BZOJ1503——郁闷的出纳员
1.题目大意:一道treap题,支持插入,询问第K大,还有全体修改+上一个值,如果某个点值小于x,那么就删除这个点 插入100000次,询问100000次,修改100次..最后输出删了多少个点 2.分 ...
- bzoj1503 郁闷的出纳员 splay版
自己yy的写法 可能有点奇怪吧 详情看代码 还是蛮短的 #include<cstdio> #include<cstring> #include<algorithm> ...
- bzoj1503 郁闷的出纳员(平衡树,思维)
题目大意: 现在有n个操作和一个最低限度m \(I\)命令\(I\ k\)新建一个工资档案,初始工资为k. \(A\)命令$A\ k $把每位员工的工资加上k \(S\)命令$S\ k $把每位员工的 ...
- C++程序员如何转Java
C++程序员如何转Java 忙里偷闲,到了这个时间终于得空写一篇早想写的文章.其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已.两 ...
- 关于CPU Cache -- 程序员需要知道的那些事
本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识.本章从"为什么会有CPU Cache","CPU Cache的大致设计架构",&q ...
- 《Hey程序员 你适合加入创业公司吗?》再补充
笔者经过多年的走访发现,不是所有优秀的程序员都能在创业公司如鱼得水.根据笔者的经验,具备下面几点优秀品质的程序员会更容易适应创业公司的环境. 1.娴熟的调试技巧可以说,程序员的大部分时间都花在调试程序 ...
随机推荐
- php简单框架的应用实例
<html> <frameset rows="50%,50%"> <frame src="/Test/header.php"> ...
- js储存参数的数组arguments
js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中.于是我们的js版支持参数默认值的函数可以通过另外一种变通的方法实现 function simue ( ...
- bootstrap 布局(收藏/摘抄)
bootstrap 12栅格 布局
- PYTHON 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
def a4(arg): ret = {} for key,value in arg.items(): if len(value) > 2: ret[key] = value[0:2] else ...
- BZOJ 2091: [Poi2010]The Minima Game
Description 每次可以任取数字,使用最优策略让差最大. Sol DP. 一开始我写了个单调队列贪心,然后狂WA不止... 正着做有后效性,因为前面的决策无法保证在后面是最优秀的,但如果倒这做 ...
- flex实验总结
1.父元素 .box{ display:flex; flex-direction: column;//铺满垂直排列 flex-direction: column-reverse;//铺满垂直反向排列 ...
- 将十进制数转为一个n位数的密码(每位都是个m进制数)
例如一个6位数的10进制密码,共有106个密码,如果把每个6位数的密码编成号就是[0,106-1].这是十进制的情况,即6个位,每个位有10种选择.如果要遍历所有密码,需要6重for循环,每个循环10 ...
- set和map的简单用法
.set(集合)map(映射)都属于关联类容器 都支持查询一个元素是否存在并能够有效地获取元素. set集合的元素总是从小到大排列,set集合通过二分查找树实现.它具备以下两个特点: ①:独一无二的元 ...
- maven项目断点依赖maven插件
- 20. Valid Parentheses
1.题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if th ...