题解:数据结构的基本操作,用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. c# Linq及Lamda表达式应用经验之 GroupBy 分组

    示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.Da ...

  2. Win8安装ASP.net 4.5(转)

    (原文:http://blog.csdn.net/dingxu_ren/article/details/17607451) 今天在我的电脑上部署Web程序时发现页面打不开,网上搜了下是因为先安装的.n ...

  3. C++学习之使用new的注意事项

    C++学习之使用new的注意事项       在构造函数中使用new来初始化对象的指针成员成员时必须特别小心,具体的说,应该如下这样做: 一.如果在构造函数中使用new来初始化指针成员,则应该在析构函 ...

  4. textarea中的空格与换行

    当在一个textarea标签中键入一个回车时,实际上会插入2个符号:\n\r在javascript里, line breaks用\n表示when you pull text into Javascri ...

  5. 用1个 2个3个 5个div实现 十字架

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)

    有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态.例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响 ...

  7. perl 爬虫两个技巧

    <pre name="code" class="cpp">jrhmpt01:/root/lwp# cat data.html <div cla ...

  8. CH Round #57 - Story of the OI Class 凯撒密码

    很有意思的一道题目 考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性.唯一性快排Nlogn乱搞的 证明如下: 对于明文abcde 密文 bcdef ...

  9. 详解Objective-C中委托和协议

    Objective-C委托和协议本没有任何关系,协议如前所述,就是起到C++中纯虚类的作用,对于“委托”则和协议没有关系,只是我们经常利用协议还实现委托的机制,其实不用协议也完全可以实现委托. AD: ...

  10. java面试核心基础(1)

    1.以下代码的执行结果 String s1 = "helloworld"; String s2 = "hello" + new Stirng("wor ...