BZOJ-1563-郁闷的出纳员(权值线段树)
偏移量要考虑清楚。
#include <bits/stdc++.h>
using namespace std;
const int N=4e5+10;
const int BASE=1e5+1;
const int RIGHT=3e5+5e4;
int segtree[N<<2],lazy[N<<2];
void pushdown(int rt)
{
if (lazy[rt]) {
lazy[rt<<1]=lazy[rt<<1|1]=1;
segtree[rt<<1]=segtree[rt<<1|1]=0;
lazy[rt]=0;
}
}
void Update(int val,int l,int r,int rt)
{
if (l==r) {
segtree[rt]++;
return ;
}
pushdown(rt);
int mid=(r+l)>>1;
if (val<=mid) {
Update(val,l,mid,rt<<1);
}
else {
Update(val,mid+1,r,rt<<1|1);
}
segtree[rt]=segtree[rt<<1]+segtree[rt<<1|1];
}
void Delete(int L,int R,int l,int r,int rt)
{
if (L<=l&&r<=R) {
lazy[rt]=1;
segtree[rt]=0;
return ;
}
pushdown(rt);
int mid=(l+r)>>1;
if (L<=mid) {
Delete(L,R,l,mid,rt<<1);
}
if (mid<R) {
Delete(L,R,mid+1,r,rt<<1|1);
}
segtree[rt]=segtree[rt<<1]+segtree[rt<<1|1];
}
int Query(int val,int l,int r,int rt)
{
if (l==r) {
return l;
}
pushdown(rt);
int mid=(l+r)>>1;
if (segtree[rt<<1]>=val) {
return Query(val,l,mid,rt<<1);
}
else {
return Query(val-segtree[rt<<1],mid+1,r,rt<<1|1);
}
}
int main()
{
char op[10];
int n,min_sal,tot=0,num,offset=0;
scanf("%d%d",&n,&min_sal);
for (int i=0;i<n;i++) {
scanf("%s%d",op,&num);
if (!strcmp(op,"I")) {
if (num>=min_sal) {
tot++;
Update(num+BASE+offset,1,RIGHT,1);
}
}
else if (!strcmp(op,"A")) {
offset-=num;
}
else if (!strcmp(op,"S")) {
offset+=num;
Delete(1,BASE+min_sal-1+offset,1,RIGHT,1);
}
else {
Delete(1,BASE+min_sal-1+offset,1,RIGHT,1);
if (num>segtree[1]) {
puts("-1");
}
else {
printf("%d\n",Query(segtree[1]-num+1,1,RIGHT,1)-BASE-offset);
}
}
}
printf("%d\n",tot-segtree[1]);
return 0;
}
BZOJ-1563-郁闷的出纳员(权值线段树)的更多相关文章
- bzoj 1503: [NOI2004]郁闷的出纳员 -- 权值线段树
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...
- P1486 [NOI2004]郁闷的出纳员[权值线段树]
权值线段树. 我们只用维护一个人是否存在,以及他当前排名,而不关心工资的具体值,这个可以直接算. 不难发现,如果不考虑新的员工,所有员工的工资的差值是不变的. 而加进来一个新的员工时,其工资为\(x\ ...
- bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树
4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec Memory Limit: 256 MB Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店. ...
- BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树
BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资. ...
- bzoj 2733: [HNOI2012]永无乡【并查集+权值线段树】
bzoj上数组开大会T-- 本来想用set瞎搞的,想了想发现不行 总之就是并查集,每个点开一个动态开点的权值线段树,然后合并的时候把值并在根上,询问的时候找出在根的线段树里找出k小值,看看这个值属于哪 ...
- [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)
[BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...
- [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树)
[BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树) 题面 原题面有点歧义,不过从样例可以看出来真正的意思 有n个位置,每个位置可以看做一个集合. ...
- BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)
题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...
- BZOJ 4605 崂山白花蛇草水(权值线段树+KD树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4605 [题目大意] 操作 1 x y k 表示在点(x,y)上放置k个物品, 操作 2 ...
- BZOJ 4777 Usaco2017 Open Switch Grass Kruskal+替罪羊树+权值线段树
这道题首先可以看出答案一定是一条边,而且答案一定在最小生成树上,那么我们就可以在这个最小生成树上维护他与异色儿子的边最小值,所以我们就可以已通过Kruskal和一棵平衡树来解决,时间复杂度是O(n*l ...
随机推荐
- Markdown上手使用
前言 学习Markdown主要是为了更好的编辑博客(捂脸),顺便学一学Markdown语法,毕竟MarkdownPad 2放着吃灰好久了(雾) MarkdownPad2 下载 链接:https://p ...
- 题解【洛谷P2003】平板
题面 由于本题中\(n\)很小,\(\Theta(n^2)\)的暴力也可以通过. 具体可参照洛谷题解区 #include <bits/stdc++.h> #define itn int # ...
- 苹果cms10 官方QQ微信防红防封代码
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- js 简单粗暴深拷贝
var obj = {} var newObj = JSON.parse(JSON.stringify(obj))
- element 表格里的input点击回车聚焦下个input
<template> <card> <el-table ref="singleTable" :data="tableData" h ...
- L2-3 名人堂与代金券
题解 这题的话,每一个人都要占一个排名,即使排名并列了. 对于最后一个排名来说,即使人数超过了指定的k,也要加入. 代码 #include <bits/stdc++.h> using na ...
- scss(sass)
- 测试理论 - Test Double
概述 简述 test double mock, fake 之类的东西 背景 最近在看 google 软件测试之道 妈的 13 年的老书了 书里有提到 mock, fake, stub 刚好, 我又不太 ...
- 每天进步一点点------Allegro PCB
Allegro PCB 1.如何在allegro中取消花焊盘(十字焊盘) set up->design parameter ->shape->edit global dynamic ...
- python+selenium:浏览器webdriver操作(1)--基本对象定位
1.简单对象的定位-----自动化测试的核心 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证 ...