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.娴熟的调试技巧可以说,程序员的大部分时间都花在调试程序 ...
随机推荐
- tail命令详解
搜索 纠正错误 添加实例 tail 在屏幕上显示指定文件的末尾若干行 补充说明 tail命令 用于输入文件中的尾部内容.tail命令默认在屏幕上显示指定文件的末尾10行.如果给定的文件不止一个,则在 ...
- XCode8目录整理后的几个警告消除,Missing file
Git目录没有及时更新导致 终端进入目录运行如下命令 git rm main.m git rm Info.plist git rm AppDelegate.h git rm AppDelegate.m ...
- linux回退到上次访问目录
cd / cd .. 回到上级目录 cd - 回到上次访问目录
- Circular Buffer
From:http://bradforj287.blogspot.com/2010/11/efficient-circular-buffer-in-java.html import java.util ...
- 【ASP.NET】利用Nuget打包package——命令行方式
通过命令行 官方说明,可以参考:creating-and-publishing-a-package 如果你希望可以使用图形界面的方式,请参考这篇文章 打包dll 使用如下的命令: nuget ...
- iOS 编译时处理器架构选择
先看看主流的ios设备的架构 armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone5 ...
- kill命令
*杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志. 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: # kill -pid 注释:标准的kill命令通 ...
- 基于TXT文本的简单图书管理系统
1 ////////////////////////////////////////////////////////////////////////////////////// //SqList.h ...
- Oracle 在线重定义表分区
==================原始表================原始表=====================原始表 create table BUILDING_temp(building ...
- ios app内嵌入http服务器
1.采用CocoaHTTPServer https://github.com/robbiehanson/CocoaHTTPServer 2.采用MongooseDaemon https://githu ...