BZOJ[NOI2004]郁闷的出纳员 | Splay板子题
题目:
洛谷也能评测....还有我wa了10多次的记录233
题解:
不要想得太复杂,搞一个全局变量记录一下工资的改变量Delta,这样可以等询问的时候就输出val+Delta,然后插入的时候插入x-Delta
不要想会不会有员工工资一样,直接插入就好,这样省不少代码量.
对于降工资操作,插入一个min-Delta节点,ans+=左子树大小,右儿子作为新的根节点
直接走的员工不要算ans
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 200010
#define which(x) (ls[fa[(x)]]==x)
using namespace std;
int sz[N],ls[N],rs[N],val[N],fa[N],n,lim,k,tot,delta,ans,root;
char s[N];
void Pushup(int x){sz[x]=+sz[ls[x]]+sz[rs[x]];}
void Rotate(int u)
{
int v=fa[u],w=fa[v],b=which(u)?rs[u]:ls[u];
if (w) which(v)?ls[w]=u:rs[w]=u;
which(u)?(ls[v]=b,rs[u]=v):(rs[v]=b,ls[u]=v);
fa[u]=w,fa[v]=u;
if (b) fa[b]=v;
Pushup(v);Pushup(u);
}
void Splay(int u)
{
while (fa[u])
{
if (fa[fa[u]])
if (which(u)==which(fa[u])) Rotate(fa[u]);
else Rotate(u);
Rotate(u);
}
root=u;
}
void Insert(int x)
{
int cur=root,v=,dir;
while (cur)
{
if (val[v=cur]>=x) cur=ls[cur],dir=;
else cur=rs[cur],dir=;
sz[v]++;
}
val[++tot]=x,fa[tot]=v,sz[tot]=;
if (v) dir==?ls[v]=tot:rs[v]=tot;
Splay(tot);
}
int getkth(int k)
{
int cur=root;
while (cur)
{
if (sz[ls[cur]]>=k) cur=ls[cur];
else if (sz[ls[cur]]+>=k) return val[cur];
else k-=sz[ls[cur]]+,cur=rs[cur];
}
return val[cur];
}
void Delete()
{
Insert(lim-delta);
ans+=sz[ls[root]];
root=rs[root],fa[root]=;
}
int main()
{
scanf("%d%d",&n,&lim);
for (int i=;i<=n;i++)
{
scanf("%s%d",s+,&k);
if (s[]=='I')
if (k>=lim) Insert(k-delta);
if (s[]=='A') delta+=k;
if (s[]=='S') delta-=k,Delete();
if (s[]=='F')
if (sz[root]<k || root==) puts("-1");
else printf("%d\n",getkth(sz[root]-k+)+delta);
}
printf("%d",ans);
return ;
}
BZOJ[NOI2004]郁闷的出纳员 | Splay板子题的更多相关文章
- BZOJ 1503: [NOI2004]郁闷的出纳员 splay
1503: [NOI2004]郁闷的出纳员 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作 ...
- bzoj 1503郁闷的出纳员(splay)
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 11759 Solved: 4163[Submit][Stat ...
- 【BZOJ1503】 [NOI2004]郁闷的出纳员 splay
splay模板题,都快把我做忧郁了. 由于自己调两个坑点. 1.删除时及时updata 2.Kth 考虑k满足该点的条件即r->ch[1]->size+1<=k && ...
- NOI2004 郁闷的出纳员 Splay
郁闷的出纳员 [问题描述] OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常, ...
- BZOJ1503 [NOI2004]郁闷的出纳员 splay
原文链接http://www.cnblogs.com/zhouzhendong/p/8086240.html 题目传送门 - BZOJ1503 题意概括 如果某一个员工的工资低于了min,那么,他会立 ...
- 洛谷P1486 [NOI2004]郁闷的出纳员(splay)
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- 洛谷.1486.[NOI2004]郁闷的出纳员(Splay)
题目链接 /* BZOJ1503: 3164kb 792ms/824ms(新建节点) 洛谷 : 3.06mb 320ms/308ms(前一个要慢wtf 其实都差不多,但前者好写) 四种操作: A:所有 ...
- bzoj1503[NOI2004]郁闷的出纳员——Splay
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1503 好奇怪呀!为什么而TLE? 各种修改终于卡时过了.可是大家比我快多了呀?难道是因为自己 ...
- BZOJ 1503: [NOI2004]郁闷的出纳员
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 10526 Solved: 3685[Submit][Stat ...
随机推荐
- jquery 操作ajax 相关方法
jQuery.get() 使用一个HTTP GET 请求从服务器加载数据. jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [dtaT ...
- v-for的简单实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- UVA_1434_YAPTCHA
The math department has been having problems lately. Due to immense amount of unsolicited automated ...
- Eclipse中文乱码解决方案
Eclipse中文乱码解决方案 1)第一个设置:window>perferences>general>workspace>text file encoding 2)Jsp编码问 ...
- Linux下 tar 命令详解
tar 是 unix/linux下的打包器 [解压] 输入命令: # tar -zxvf filename.tar.gz 参数解释: z :表示 tar 包是被 gzip 压缩过的 (后缀是.ta ...
- VS2013未能正确加载的问题【转载】
今天使用电脑,关机重启时,WINDOWS提示“正在配置中,请勿关机” 的提醒,等重启后,打开VS2013就提示了未加载成功的问题,如下图: 我的解决方法是:找到VS2013开发人员命令提示:在窗口中输 ...
- UINavigationController相关
掌握: 1. UINavigationController的使用:添加.移除控制器. 2. UINavigationBar内容的设置. -------------------------------- ...
- POJ 1222 反转
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12469 Accepted: 7 ...
- JAVA-数组或集合
哈哈,今天我们来讲解一下有关于一些数组 或者是集合的知识点 1.ArrayList,LinkedList,Vector的区别 ArrayList,LinkedList,Vector都是实现List接口 ...
- mysql 中的基本用法,以及日期的转换
1.mysql int(10) int 类型长度4个字节,大约表示2^32数字,10代表的是显示长度,一般和FILLZERO约束一起使用,如果没有达到该长度,填充02-->000000002 m ...