题解:数据结构的基本操作,用STL可以完美实现,就是比较慢……

#include <cstdio>
#include <map>
#include <set>
#include <vector>
#include <algorithm>
const int MAXN=500005;
const int INF=~0U>>1;
using namespace std;
int n,m;
sets,tr;
map<int, int>mp;
vectorg[MAXN];
int a[MAXN], b[MAXN];
int main(){
scanf("%d%d",&n,&m);
int mg=INF,ms=INF,pos,val;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
tr.insert(a[i]);
b[i]=a[i];
if(i){
int k=abs(a[i]-a[i - 1]);
s.insert(k); mp[k]++;
}
}
sort(b,b+n);
for(int i=1;i<n;i++)ms=min(ms,b[i]-b[i-1]);
mg=*s.begin();
char op[33];
while(m--){
scanf("%s",op);
if(op[4]=='R'){
scanf("%d%d",&pos,&val); pos--;
g[pos].push_back(val);
if(ms){
set::iterator it=tr.lower_bound(val);
if(it!=tr.begin()){
if(it==tr.end()){
it--;
ms=min(ms,abs(val-*it));
}
else{
int x=*it; it--;
int y=*it;
ms=min(ms,abs(x-val));
ms=min(ms,abs(y-val));
}
}
else ms=min(ms,abs(val-*tr.begin()));
}
tr.insert(val);
int x,y=INF;
if(g[pos].size()==1)x=a[pos];
else x=g[pos][g[pos].size()-2];
if(pos+1<n){
y=a[pos+1];
int k=abs(x-y); mp[k]--;
if(mp[k]==0)s.erase(k);
k=abs(x-val); s.insert(k);
mp[k]++;
k=abs(y-val); s.insert(k);
mp[k]++; mg=*s.begin();
}
else{
int k=abs(x-val);
s.insert(k);
mp[k]++; mg=*s.begin();
}
}
else if(op[4]=='G') printf("%d\n", mg);
else printf("%d\n", ms);
}
return 0;
}

BZOJ 1058 报表统计 (STL)的更多相关文章

  1. [BZOJ 1058] 报表统计

    Link: BZOJ 1058 传送门 Solution: 为了这道题今天下午一直都在和常数大战…… 1.对于询问1,我们记录每个数末位置的数$T[i]$和初始位置$S[i]$ 用平衡树维护所有差值, ...

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

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

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

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

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

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

  5. [BZOJ 1058] [ZJOI2007] 报表统计 【平衡树】

    题目链接:BZOJ - 1058 题目分析 这道题看似是需要在序列中插入一些数字,但其实询问的内容只与相邻的元素有关. 那么我们只要对每个位置维护两个数 Ai, Bi, Ai 就是初始序列中 i 这个 ...

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

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

  7. bzoj 1058: [ZJOI2007]报表统计 (Treap)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1058 题面; 1058: [ZJOI2007]报表统计 Time Limit: 15 Sec ...

  8. bzoj P1058 [ZJOI2007]报表统计——solution

    1058: [ZJOI2007]报表统计 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 4099  Solved: 1390 [Submit][St ...

  9. bzoj1058: [ZJOI2007]报表统计

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

随机推荐

  1. ADO知识的运用二(Day 28)

    可能是最近有些沉迷于电视剧了,所以,好多天都没写总结了.我知道这样不好,但又老管不住自己,也许是我自控力太差了吧......呵呵,如果在不写总结,可能以后就会成为习惯了.所以今天要赶紧补上...... ...

  2. Windows 10 : 使用BCDboot恢复双系统启动

    电脑装上win10以后,立马把原来系统的启动信息删了.结果有个软件需要反激活,但是Win10已经没有Boot.ini这样的启动配置文件. 花了好多时间查找,发现这篇文章.实际操作倒是很简单.执行以下命 ...

  3. C++/C# 最基本的Marshal和Ptr

    Vidyo32.VidyoClientInEventLogin Login = new Vidyo32.VidyoClientInEventLogin(); Login.portalUri = thi ...

  4. C语言函数可变参数列表

    C语言允许使用可变参数列表,我们常用的printf函数即为可变参数函数,C标准库提供了stdarg.h为我们提供了这方面支持:该头文件提供了一些类型和宏来支持可变参数列表,包括类型va_list,宏v ...

  5. 升级python的sqlite库版本

    今天了解了一下用python获取chrome cookie信息,在研究的过程中,发现打开数据库失败,后来调查了一下发现是由于sqlite3库太老的缘故,起码需要3.8以上,然后看了一下python 2 ...

  6. BZOJ 1974: [Sdoi2010]auction 代码拍卖会( dp )

    在1, 11, 111……中选<=8个, + 11..(n个1)拼出所有可能...这些数mod p至多有p中可能, 找出循环的处理一下. 那么dp就很显然了...dp(i, j, k)表示前i种 ...

  7. Hadoop 处理“Name node is in safe mode”问题(转)

    运行hadoop程序时,有时候会报以下错误:org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Nam ...

  8. css区分ie6,7,ff

    IE6能识别*,但不能识别 !important,IE7能识别*,也能识别!important;FF不能识别*,但能识别!important; 可以这样区别FF,IE7,IE6: background ...

  9. 一周学会Mootools 1.4中文教程:(1)Dom选择器

    利器: 君欲善其事须先利其器,好吧因为我们的时间比较紧迫,只有六天而已,那么六天的时间用死记硬背的方式学会Mt犹如天方夜谭,因此我们需要借鉴一下Editplus的素材栏帮我们记忆就好了,当我们需要用到 ...

  10. 【LeetCode题意分析&解答】41. First Missing Positive

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0]  ...