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 ...
随机推荐
- Objective-C的hook方案(一): Method Swizzling
Objective-C的hook方案(一): Method Swizzling 转自:http://blog.csdn.net/yiyaaixuexi/article/details/9374411 ...
- ASP.NET MVC 必备知识点杂谈
一 工程结构4个程序集 Microsoft.Web.Mvc --一些可以使用的,不确定的程序包System.Web.Mvc --主程序库下面两个列入3.5的Net框架了System.Web.Abs ...
- h5的api dom全屏展示
下面是完整的例子,暂不做分析 <!DOCTYPE html> <html> <head> <title> FullScreen API 演示</t ...
- LaTeX技巧如何拆分源文件并且分别编译
当处理很大的文档时,经常将文件分成若干个部分分别进行编译,这时我们可以使用LATEX所提供的命令 \input \include \includeonly \input{texfile} 文件名只需指 ...
- Qt qss一些伪装态,以及margin与padding区别
伪状态 描述 :checked button部件被选中:disabled 部件被禁用:enabled 部件被启用:focus 部件获得焦点:hover 鼠标位于部件 ...
- HDU 5828 Rikka with Sequence(线段树)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5828 [题目大意] 给出一个数列,要求支持区间加法,区间开方和区间和查询操作. [题解] 考虑开方 ...
- Android项目开发五-《星星生活志》1.使用MediaRecorder录制音频
Android设备实现录制音频的简单demo 转载请注明; http://blog.csdn.net/u013670933/article/details/26089487 代码例如以下: publi ...
- 远程登录阿里云上的MySQL
近期对云和server之类的感兴趣,想要将自己的数据什么的保存到远端server.研究了阿里云和百度云.今天算是有点进步吧. 我在阿里云上申请了个免费的云server(ECS),非常可惜仅仅能用5天. ...
- hud 2089 不要62 (数位dp)
#include<stdio.h> #include<string.h> #include<math.h> #define max 10 ]; int number ...
- c#软件工程师笔试题
近来有打算重新找工作,还没提离职,投了几家公司简历,其中一家比较中意的公司给发了面试题,其实,好像是好几天前的事了,主要是Gmail邮箱很少用,所以一直都没去看,今天看到题目给解了. 题目如下: 题目 ...