对n个位置,每个位置维护一个vector。

每次插入,可能对MIN_SORT_GAP产生的影响,只可能是 插入元素 和 它的 前驱 后继 造成的,用一个set维护(存储所有序列中的元素)。

我们还得维护一个multiset(存储相邻元素的差值),可能对MIN_GAP产生影响,只可能是它在序列中的前一个元素和后一个元素造成的,但同时要删除它两侧的元素的差值(有可能有重复的,我们不应多删)。

 #include<cstdio>
#include<vector>
#include<algorithm>
#include<set>
using namespace std;
vector<int>a[];
set<int>s1;
multiset<int>s2;
typedef set<int>::iterator ITER;
typedef pair<ITER,bool> Point;
int n,m,t,x,y,MIN_SORT_GAP=;
char op[];
int Abs(const int &x){return x< ? -x : x;}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%d",&t);
a[i].push_back(t);
s1.insert(t);
if(i!=) s2.insert(Abs(t-(*a[i-].begin())));
}
for(ITER it=s1.begin();it!=s1.end();it++)
{
int t=(*it); if((++it)==s1.end()) break;
MIN_SORT_GAP=min(MIN_SORT_GAP,(*it)-t);
--it;
}
for(int i=;i<=m;i++)
{
scanf("%s",op);
if(op[]=='I')
{
scanf("%d%d",&x,&y);
s2.insert(Abs(y-a[x][a[x].size()-]));
if(x!=n)
{
s2.erase(s2.find(Abs(a[x][a[x].size()-]-(*a[x+].begin()))));
s2.insert(Abs(y-(*a[x+].begin())));
}
a[x].push_back(y);
Point t=s1.insert(y);
if(!MIN_SORT_GAP) continue;
if(t.second)
{
if(t.first!=s1.begin())
{
--t.first;
MIN_SORT_GAP=min(MIN_SORT_GAP,y-(*t.first));
}
++t.first; if((++t.first)!=s1.end())
MIN_SORT_GAP=min((*t.first)-y,MIN_SORT_GAP);
}
else MIN_SORT_GAP=;
}
else if(op[]=='S') printf("%d\n",MIN_SORT_GAP);
else printf("%d\n",*s2.begin());
}
return ;
}

【set】【multiset】bzoj1058 [ZJOI2007]报表统计的更多相关文章

  1. bzoj1058: [ZJOI2007]报表统计

    set.操作:insert(u,v)在u后面插入v,若u后面已插入过,在插入过的后面插入.mingap求出序列两两之间差值的最小值.minsortgap求出排序后的序列两两之间的最小值.用multis ...

  2. BZOJ1058: [ZJOI2007]报表统计(set)

    Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 4190  Solved: 1420[Submit][Status][Discuss] Descript ...

  3. bzoj1058: [ZJOI2007]报表统计 stl xjbg

    小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个可能为负数的整数数列,并且 ...

  4. [bzoj1058][ZJOI2007][报表统计] (STL)

    Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个 ...

  5. BZOJ1058:[ZJOI2007]报表统计(Splay,堆)

    Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个 ...

  6. 【BZOJ1058】[ZJOI2007]报表统计 STL

    [BZOJ1058][ZJOI2007]报表统计 Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一.经 ...

  7. BZOJ 1058: [ZJOI2007]报表统计( 链表 + set )

    这种题用数据结构怎么写都能AC吧...按1~N弄个链表然后每次插入时就更新答案, 用set维护就可以了... --------------------------------------------- ...

  8. [补档][ZJOI2007] 报表统计

    [ZJOI2007] 报表统计 题目 传送门 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一. 经过仔细观察,小Q发现统计一 ...

  9. BZOJ_1058_[ZJOI2007]报表统计_STL

    BZOJ_1058_[ZJOI2007]报表统计_STL Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼 ...

随机推荐

  1. 通用adapter

    http://blog.csdn.net/lmj623565791/article/details/38902805/

  2. border-1px;避免移动端下边框部分2px

    .border-1px { position: relative; } .border-1px:after { display: block; position: absolute; left:; b ...

  3. 封装getByClass(JS获取class的方法封装为一个函数)

    获取方法一(普通版) 获取单一的class: function getByClass(oParent, sClass) {//两个形参,第一个对象oParent 第二个样式名class var aEl ...

  4. vue2.0基础知识,及webpack中vue的使用

    ## 基础指令 ## [v-cloak]{         Display:none;     }     <p v-cloak>xx{{msg}}xx</p> //解决闪烁问 ...

  5. Java中中英文对齐输出问题,以及Java中的格式化输出

    一 中英文对齐输出问题 问题,要求控制台输出如下: abcefg  def 森林 阿狗 其实就是要求对齐输出,各种查找java的格式化输出,然后发现只要一个简单的“\t”就可以实现. 代码如下: Sy ...

  6. 校内训练0609 problem c

    [题目大意] 给一棵树,求有多少条路径满足总和-最大值 是P的倍数 n<=10^5, P<=10^7 [题解] 一看就是点分治嘛 不考虑子树合并,考虑poj1741的做法,每次考虑经过重心 ...

  7. codevs3304 水果姐逛水果街Ⅰ

    题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了 ...

  8. bootstrap row 行间距

    <div class="clearfix" style="margin-bottom: 10px;"></div>清除浮动加个margi ...

  9. Apache多网站虚拟目录域名

    一台服务器安装了Apache,如何绑定多个域名或网站呢? 最简单高效的方法如下: 1. 先打开Apache的配置文件httpd.conf,在这个文件, 找到这句:“#Include etc/extra ...

  10. bzoj 3212 线段树

    裸的线段树 /************************************************************** Problem: User: BLADEVIL Langua ...