题意:

第一行有两个整数 nnn 和 min⁡min⁡min⁡。nnn 表示下面有多少条命令,min⁡min⁡min⁡ 表示工资下界。

接下来的 nnn 行,每行一个字符xxx和一个整数 kkk,表示一条命令。命令可以是以下四种之一:

I k 新建一个工资档案,初始工资为 k。如果某员工的初始工资低于工资下界,他将立刻离开公司。

A k 把每位员工的工资加上 k 。

S k 把每位员工的工资扣除 k。

F k 查询第 k 多的工资。

在初始时,可以认为公司里一个员工也没有。

题解:
只做过一两道平衡树的题目,不过有一说一,这道题感觉非常模板。
其实就是模板题加了一个操作,区间修改的操作。
打一个lazy即可。
fhq-treap非常容易实现。

代码:

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;const int maxn=3e5+10;mt19937 rnd(233);int imin;struct FHQ{int cnt,root;int ls[maxn],rs[maxn],val[maxn],key[maxn],siz[maxn];int lazy[maxn];int newnode(int x){val[++cnt]=x;key[cnt]=rnd();siz[cnt]=1;return cnt;}void update(int node){siz[node]=siz[ls[node]]+siz[rs[node]]+1;}void push_down(int node){if(ls[node]){lazy[ls[node]]+=lazy[node];val[ls[node]]+=lazy[node];}if(rs[node]){lazy[rs[node]]+=lazy[node];val[rs[node]]+=lazy[node];}lazy[node]=0;}void spilt_val(int node,int vals,int &x,int &y){if(!node){x=y=0;return ;}if(lazy[node]) push_down(node);if(val[node]<=vals){x=node;spilt_val(rs[node],vals,rs[node],y);}else{y=node;spilt_val(ls[node],vals,x,ls[node]);}update(node);}int mer(int x,int y){if(!x||!y) return x+y;if(key[x]>key[y]){rs[x]=mer(rs[x],y);update(x);return x;}else{ls[y]=mer(x,ls[y]);update(y);return y;}}int x,y,z;void insert(int vals){if(vals<imin) return;spilt_val(root,vals,x,y);root=mer(mer(x,newnode(vals)),y);}void add(int x){val[root]+=x;lazy[root]+=x;}void sub(int x){val[root]-=x;lazy[root]-=x;spilt_val(root,imin-1,x,y);root=y;}int get_kth(int rank){if(siz[root]<rank) return -1;rank=siz[root]-rank+1;int node=root;while(node){push_down(node);if(siz[ls[node]]+1==rank) break;else if(siz[ls[node]]>=rank) node=ls[node];else{rank-=siz[ls[node]]+1;node=rs[node];}}return val[node];}
}tree;signed main(){ios::sync_with_stdio(false);cin.tie(0);int n;cin>>n>>imin;for(int i=1;i<=n;i++){char c;int x;cin>>c>>x;if(c=='I')  tree.insert(x);else if(c=='A') tree.add(x);else if(c=='S') tree.sub(x);else if(c=='F'){int ans=tree.get_kth(x);//cout<<"debug  "<<tree.siz[tree.root]<<endl;cout<<ans<<endl;}}cout<<tree.cnt-tree.siz[tree.root]<<endl;}

P1486 [NOI2004] 郁闷的出纳员 FHQ-Treap相关推荐

  1. 洛谷 P1486 [NOI2004]郁闷的出纳员【Treap】

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...

  2. 洛谷P1486 [NOI2004] 郁闷的出纳员 题解

    P1486 [NOI2004] 郁闷的出纳员 题目链接:P1486 [NOI2004] 郁闷的出纳员 题意:维护一个数据结构,支持 插入一个大小为 kkk​ 的值,小于下界时不插入 所有元素加上 kk ...

  3. P1486 [NOI2004]郁闷的出纳员

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...

  4. 洛谷 P1486 [NOI2004]郁闷的出纳员

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...

  5. [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...

  6. bzoj1503: [NOI2004]郁闷的出纳员

    地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 题目: 1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  ...

  7. BZOJ1503[NOI2004]郁闷的出纳员——treap

    OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他心 ...

  8. [NOI2004]郁闷的出纳员 Treap

    蒟蒻刚学旋转Treap,打个板子练练手. 题目描述 原题来自:NOI 2004 OIER 公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是 ...

  9. BZOJ 1503: [NOI2004]郁闷的出纳员 Treap

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

最新文章

  1. 《网络攻防实践》第七周作业
  2. amd一键超频怎么用_头条信息流“一键起量”工具怎么用?经验分享
  3. 看得见的开发管理方法—缺陷管理
  4. 笔记 英语二 考研先导课 0126
  5. springcloud工作笔记091---tk.mybatis.mapper.MapperException: 当前实体类不包含名为XXXXX的属性!
  6. 体验一下阿里云文字识别OCR
  7. 通过UA判断手机的类型
  8. Hbuilder链接逍遥模拟器
  9. 图深度学习——复杂图嵌入:异质图,二分图,多维图,超图,符号图,动态图
  10. 安卓手机突然很卡_为什么你的安卓手机越用越卡,真是内存不够?终于找到原因了!...
  11. 关于ceph的一些问题及解决
  12. CenterFusion代码复现
  13. 04-0002 PCA算法
  14. 武大计算机科学与技术弘毅学堂,武汉大学研究生精品课-百余新学子体验“弘毅学堂”...
  15. 电脑双核CPU具体是什么意思?
  16. 串的模式匹配算法---RK
  17. 无光驱无U盘 硬盘安装操作系统 NT6
  18. 从金蝶k3到金税盘_金蝶K3操作流程图详解
  19. 2020酒店互动电视IPTV系统七种解决方案
  20. 未来计算机的四大新技术是什么,汪成为院士:未来计算机技术发展四大动力

热门文章

  1. Java基本数据类型转换|字符和字符串
  2. 亲测可以使用的:Maven将中央仓库修改为阿里云的maven仓库
  3. 网络工程师_记录的一些真题_2018上半年上午
  4. 引用次数在 19000 次+的,都是什么神仙论文?
  5. 我靠这份无人机完全指南吹了一整年牛!
  6. 收藏 | 图像分割深度学习从零开始学习路线
  7. 三天打入CV大赛决赛圈!我是如何做到的?
  8. 第十二周-学习进度条
  9. IDEA下使用Jetty进行Debug模式调试【含演示GIF图】
  10. 统一沟通-技巧-10-Lync-公网证书-Go Daddy