treap 1286郁闷的出纳员.cpp
#include<cstdio>
#include<cstdlib>
#include<ctime>
struct shu
{
int l,r,sum,zhi,dui;
}a[100005];
int n,xia,root,size,lei,leave;
char ch[2];
void you(int &a1)
{
int t=a[a1].l;
a[a1].l=a[t].r;
a[t].r=a1;
a[t].sum=a[a1].sum;
a[a1].sum=a[a[a1].l].sum+a[a[a1].r].sum+1;
a1=t;
return;
}
void zuo(int &a1)
{
int t=a[a1].r;
a[a1].r=a[t].l;
a[t].l=a1;
a[t].sum=a[a1].sum;
a[a1].sum=a[a[a1].l].sum+a[a[a1].r].sum+1;
a1=t;
return;
}
void jia(int &a1,int a2)
{
if(a1==0)
{
size++;
a1=size;
a[a1].sum=1;
a[a1].zhi=a2;
a[a1].dui=rand();
return;
}
a[a1].sum++;
if(a2<a[a1].zhi)
{
jia(a[a1].l,a2);
if(a[a[a1].l].dui<a[a1].dui)
you(a1);
}
else
{
jia(a[a1].r,a2);
if(a[a[a1].r].dui<a[a1].dui)
zuo(a1);
}
return;
}
int shan(int &a1,int a2)
{
if(a1==0)
return 0;
int t;
if(a[a1].zhi<a2)
{
t=a[a[a1].l].sum+1;
a1=a[a1].r;
return t+shan(a1,a2);
}
t=shan(a[a1].l,a2);
a[a1].sum-=t;
return t;
}
int zhao(int a1,int a2)
{
if(a[a[a1].r].sum+1==a2)
return a[a1].zhi;
if(a[a[a1].r].sum>=a2)
return zhao(a[a1].r,a2);
else
return zhao(a[a1].l,a2-a[a[a1].r].sum-1);
}
int main()
{
root=size=0;
srand(time(0));
scanf("%d%d",&n,&xia);
for(int i=0;i<n;i++)
{
int a1;
scanf("%s%d",ch,&a1);
if(ch[0]=='I')
if(a1>=xia)
jia(root,a1-lei);
if(ch[0]=='A')
lei+=a1;
if(ch[0]=='S')
{
lei-=a1;
leave+=shan(root,xia-lei);
}
if(ch[0]=='F')
{
if(a1>a[root].sum)
printf("-1\n");
else
printf("%d\n",zhao(root,a1)+lei);
}
}
printf("%d\n",leave);
return 0;
}
treap 1286郁闷的出纳员.cpp的更多相关文章
- c++之路进阶——codevs1286(郁闷的出纳员)
1286 郁闷的出纳员 2004年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description OIER公司 ...
- bzoj 1503: [NOI2004]郁闷的出纳员 Treap
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 6263 Solved: 2190[Submit][Statu ...
- BZOJ 1503 郁闷的出纳员 (treap)
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 13370 Solved: 4808[Submit][Stat ...
- [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...
- [BZOJ 1503]郁闷的出纳员(fhq treap)
[BZOJ 1503]郁闷的出纳员 题面 第一行有两个非负整数n和min.n表示下面有多少条命令,min表示工资下界. 接下来的n行,每行表示一条命令.命令可以是以下四种之一: 名称 格式 作用 I命 ...
- AC日记——郁闷的出纳员 codevs 1286
郁闷的出纳员 思路: 设工资下限为ko,然后ko--(因为要小于工资下限): 设cur为记录工资增长,降低: 设第i个人的工资为pos: 对应的四种操作: 插入:cur-pos-ko: 增长:cur- ...
- BZOJ 1503: [NOI2004]郁闷的出纳员
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 10526 Solved: 3685[Submit][Stat ...
- 1503: [NOI2004]郁闷的出纳员 (SBT)
1503: [NOI2004]郁闷的出纳员 http://www.lydsy.com/JudgeOnline/problem.php?id=1503 Time Limit: 5 Sec Memory ...
- P1486 [NOI2004]郁闷的出纳员
P1486 [NOI2004]郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷 ...
随机推荐
- [转载] 构建微服务:使用API Gateway
原文: http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=206889381&idx=1&sn=478ccb35294c ...
- [转载] tcp那些事2
原文: http://coolshell.cn/articles/11609.html 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我 ...
- OpenERP QWeb模板标签笔记
在OpenERP中,通过QWeb来对模板进行渲染后加载到浏览器中,而模板中有许多的标签来定制各种需求变化,在这里记录学习过程中碰到的标签定义,以方便查询. 模板中的标签统一都是以"t-&qu ...
- zend studio12.5破解方法
其实,很简单,找到zend studio 安装目录,G:\zend studio\plugins,把文件com.zend.verifier_12.5.1.v20150514-2003.jar替换成压缩 ...
- 多列布局 css3 column属性
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- 修改jsp文件tomcat发布失败(Could not delete May be locked by another process)
突然项目修改jsp文件后,tomcat不能发布, Publishing failed with multiple errors Could not delete D:/Tomcat 6.0/web ...
- 转:C++语言的15个晦涩特性
转自 http://blog.jobbole.com/54140/ 操作符重载和检查顺序 重载,(逗号),||或者&&操作符会引起混乱,因为它打破了正常的检查规则.通常情况下,逗号操作 ...
- 深入理解PHP原理之变量分离/引用
19 Sep 08 深入理解PHP原理之变量分离/引用(Variables Separation) 作者: Laruence( ) 本文地址: http://www.laruence.com/20 ...
- bottomNavigationBar 底部导航tab MD
1.先上图: 此底部Tab完全可以满足日常的开发 2.使用: 很简单,使用Gradle构建:compile ‘com.ashokvarma.android:bottom-navigation-bar: ...
- WinForm应用程序之注册模块的设计与实现
Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好 ...