bzoj1503--treap
这道题和一般的题目不同,A和S操作要修改所有节点。所以定义基准d,每个节点的工资是它的值+d,这样就能完成所有操作。
I k:将值为k-d的节点插入treap
A k:将d加上k
S k:将d减去k,并将所有值小于min-d的节点删除。
F k:因为treap在插入时就是有序的,所以直接查找。
这里要注意:
在实际编码中,为了减少出错的可能性,一般用一个真实的指针null代替空指针NULL,方法如下:
Node *null=new Node();
还有一个略坑的地方就是如果一个员工的初始工资低于工资下界,他将立即离开公司。这不算在离开公司的员工总数内。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
struct Node{
int v,r,s;
Node* ch[];
int cmp(int x)const{
if(x==v)return -;
return x>v?:;
}
void push_up(){
s=ch[]->s+ch[]->s+;
}
};
Node* null=new Node();
Node* root=null;
int i,j,k,n,m,x,y,tot,d,sum;
char c[];
void rotate(Node* &o,int d){
Node* k=o->ch[d^];
o->ch[d^]=k->ch[d];
k->ch[d]=o;
o->push_up();
k->push_up();
o=k;
}
void insert(Node* &o,int x){
if(o==null){
o=new Node();
o->ch[]=o->ch[]=null;
o->v=x;
o->r=rand();
o->s=;
}else{
int d=o->v>x?:;
insert(o->ch[d],x);
if(o->ch[d]->r>o->r)rotate(o,d^);
}
o->push_up();
}
int del(Node* &o,int x){
if(o==null)return ;
if(o->v<x){
int t=o->ch[]->s+;
o=o->ch[];
return t+del(o,x);
}else{
int t=del(o->ch[],x);
o->s-=t;
return t;
}
}
int find(Node* o,int x){
int s=o->ch[]==null?:o->ch[]->s;
if(s+==x)return o->v;
if(s>=x)return find(o->ch[],x);
return find(o->ch[],x-s-);
}
int main()
{
scanf("%d%d",&n,&m);
d=tot=;
for(i=;i<=n;i++){
scanf("%s%d",c,&x);
if(c[]=='I')if(x>=m)insert(root,x-d);
if(c[]=='A')d+=x;else
if(c[]=='S'){
d-=x;
tot+=del(root,m-d);
}else if(c[]=='F')if(x>root->s)printf("-1\n");else printf("%d\n",find(root,x)+d);
}
printf("%d\n",tot);
return ;
}
bzoj1503
bzoj1503--treap的更多相关文章
- [BZOJ1503] [NOI2004] 郁闷的出纳员 (treap)
Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...
- BZOJ1503[NOI2004]郁闷的出纳员——treap
OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他心 ...
- [luogu1486][bzoj1503][NOI2004]郁闷的出纳员【平衡树treap】
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...
- 2018.08.06 bzoj1503: [NOI2004]郁闷的出纳员(非旋treap)
传送门 平衡树简单题. 直接用fhgtreap实现分裂和合并就没了. 代码: #include<bits/stdc++.h> #define N 100005 using namespac ...
- Treap初步
模板题 bzoj3224: Tyvj 1728 普通平衡树 #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i ...
- 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)
在刷了许多道平衡树的题之后,对平衡树有了较为深入的理解,在这里和大家分享一下,希望对大家学习平衡树能有帮助. 平衡树有好多种,比如treap,splay,红黑树,STL中的set.在这里只介绍几种常用 ...
- fhq treap最终模板
新学习了fhq treap,厉害了 先贴个神犇的版, from memphis /* Treap[Merge,Split] by Memphis */ #include<cstdio> # ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 [treap hash]
1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1318 Solved: 498[Submit][ ...
随机推荐
- 获取微软原版“Windows 10 推送器(GWX)” 卸载工具
背景: 随着Windows 10 免费更新的结束,针对之前提供推送通知的工具(以下简称GWX)来说使命已经结束,假设您还未将Windows 8.1 和Windows 7 更新到Windows 10 的 ...
- [内核笔记1]内核文件结构与缓存——inode和对应描述
由来:公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列,然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作,尽量的减少Nginx的阻塞. 但是由于System/V消 ...
- JAVA FreeMarker工具类
FreeMarkerUtil.java package pers.kangxu.datautils.utils; import java.io.File; import java.io.StringW ...
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
- RabbitMQ + PHP (三)案例演示
今天用一个简单的案例来实现 RabbitMQ + PHP 这个消息队列的运行机制. 主要分为两个部分: 第一:发送者(publisher) 第二:消费者(consumer) (一)生产者 (创建一个r ...
- ASP.NET Web API Model-ParameterBinding
ASP.NET Web API Model-ParameterBinding 前言 通过上个篇幅的学习了解Model绑定的基础知识,然而在ASP.NET Web API中Model绑定功能模块并不是被 ...
- Electron的环境配置
原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...
- SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html 水印就不加了,在老家~(另一篇文章好像没发布成功,简单说下,2016安装完毕是 ...
- 单例模式——创建型模式01
1. 名称 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类.单例模式是一种对象创建型模式. 2. 问题 ...
- 使用AWS亚马逊云搭建Gmail转发服务(二)
title: 使用AWS亚马逊云搭建Gmail转发服务(二) author:青南 date: 2014-12-31 14:44:27 categories: [Python] tags: [Pytho ...