BZOJ 1058 报表统计 (STL)
题解:数据结构的基本操作,用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)的更多相关文章
- [BZOJ 1058] 报表统计
Link: BZOJ 1058 传送门 Solution: 为了这道题今天下午一直都在和常数大战…… 1.对于询问1,我们记录每个数末位置的数$T[i]$和初始位置$S[i]$ 用平衡树维护所有差值, ...
- 【BZOJ1058】[ZJOI2007]报表统计 STL
[BZOJ1058][ZJOI2007]报表统计 Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一.经 ...
- bzoj1058: [ZJOI2007]报表统计 stl xjbg
小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个可能为负数的整数数列,并且 ...
- [bzoj1058][ZJOI2007][报表统计] (STL)
Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个 ...
- [BZOJ 1058] [ZJOI2007] 报表统计 【平衡树】
题目链接:BZOJ - 1058 题目分析 这道题看似是需要在序列中插入一些数字,但其实询问的内容只与相邻的元素有关. 那么我们只要对每个位置维护两个数 Ai, Bi, Ai 就是初始序列中 i 这个 ...
- BZOJ 1058: [ZJOI2007]报表统计( 链表 + set )
这种题用数据结构怎么写都能AC吧...按1~N弄个链表然后每次插入时就更新答案, 用set维护就可以了... --------------------------------------------- ...
- bzoj 1058: [ZJOI2007]报表统计 (Treap)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1058 题面; 1058: [ZJOI2007]报表统计 Time Limit: 15 Sec ...
- bzoj P1058 [ZJOI2007]报表统计——solution
1058: [ZJOI2007]报表统计 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 4099 Solved: 1390 [Submit][St ...
- bzoj1058: [ZJOI2007]报表统计
set.操作:insert(u,v)在u后面插入v,若u后面已插入过,在插入过的后面插入.mingap求出序列两两之间差值的最小值.minsortgap求出排序后的序列两两之间的最小值.用multis ...
随机推荐
- MS SQL:ID自增列从1开始重新排序
数据库中把ID自增长重置成1: 一般做法:(太麻烦) 复制表数据->删除原表.新建一张表->粘贴: 新方法: 数据库中:新建查询->复制.粘贴一下代码->修改表名,执行即可(先 ...
- notepad++ 必装插件
nppftp ;FTP客户端,你懂的: explorer:设置常用文件链接:打开当前文件路径:
- Hql中占位符(转)
在新的Hibernate 4版本中,对于Hql有一点点改变,如果你还是按照以前的方式去编写HQL并且用了以下占位符的方式,就会得到一个警告. 参考资料:https://hibernate.atlass ...
- Qt QToolTip 控件背景的 QSS 设置方法(摘抄)
Qt/C++/CSS: QTooltip stylesheet background colour Hi there, I've recently come across a problem deve ...
- Django Web开发【4】 用户注册与管理
几乎所有的网站都提供了用户注册与管理功能,这一节,我们将讲解如何利用Django自身提供的用户认证系统实现用户注册与管理功能. 会话认证 在上一节中,我们学习了User数据模型,并用它来保存用户信息, ...
- Android 汉字转拼音之工具篇
/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Versi ...
- IO之读入文件
整个java.io包中最重要的就是5个类和一个接口,5个类指的是File,OutputStream,InputStream,Reader,Writer:一个接口是Serializable. 在整个io ...
- 表单元素的submit()方法和onsubmit事件(转)
1.表单元素中出现了name="submit"的元素 2.elemForm.submit();不会触发表单的onsubmit事件 3.动态创建表单时遇到的问题 表单元素拥有subm ...
- laravel安装说明
1.composer已安装.没安装可以看我上一篇 :http://www.cnblogs.com/seakt/p/4503249.html 2.配置环境变量,找到composer的位置,一般默认都在 ...
- H3C交换配置PBR最佳实践
简要说明 PBR算是比较常用的功能,需要我们去掌握一下 配置步骤简要 配置BFD 配置track 配置acl 配置policy-based-route 在接口上面应用policy-based-rout ...