原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ1058.html

题目传送门 - BZOJ1058

题解

  考虑用两个 multiset 分别维护两个答案。

  一个直接按照权值维护,另一个维护一下相邻位置的差。

  比较容易想到如何维护的吧,不多讲,看代码吧。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=500005;
int read(){int x=0,f=1;char ch=getchar();while (!isdigit(ch)&&ch!='-')ch=getchar();if (ch=='-')f=-1,ch=getchar();while (isdigit(ch))x=(x<<1)+(x<<3)+ch-48,ch=getchar();return x*f;
}
int n,m;
vector <int> v[N];
multiset <int> S1,S2;
int ans1;
int add1(int x){S1.insert(x);multiset <int> :: iterator p=S1.find(x);multiset <int> :: iterator L=p,R=p;--L,++R;ans1=min(ans1,min(abs((*p)-(*L)),abs((*p)-(*R))));
}
int main(){n=read(),m=read();S1.clear();S2.clear();S1.insert(-2e9);S1.insert(ans1=2e9);for (int i=1;i<=n;i++){int x=read();v[i].clear();v[i].push_back(x);add1(x);if (i>1)S2.insert(abs(v[i][0]-v[i-1][0]));}v[n+1].clear();v[n+1].push_back(2e9);S2.insert(abs(v[n+1][0]-v[n][0]));while (m--){char ch[40];int a,b;scanf("%s",ch);if (ch[0]=='I'){a=read(),b=read();add1(b);int k=(int)v[a].size();S2.erase(S2.find(abs(v[a][k-1]-v[a+1][0])));S2.insert(abs(v[a][k-1]-b));v[a].push_back(b);S2.insert(abs(b-v[a+1][0]));}else if (ch[4]=='G'){printf("%d\n",*S2.begin());}else if (ch[4]=='S'){printf("%d\n",ans1);}}return 0;
}

  

转载于:https://www.cnblogs.com/zhouzhendong/p/BZOJ1058.html

BZOJ1058 [ZJOI2007]报表统计 set相关推荐

  1. BZOJ1058 ZJOI2007 报表统计 线段树+平衡树

    题意:给定一个序列,维护:1.插入一个元素  2.求相邻两个元素中,差值绝对值的最小值  3.求序列排序后相邻两个元素中,差值绝对值的最小值 题解: MIN_GAP:如果我们把数看成一组一组,每次插入 ...

  2. bzoj1058: [ZJOI2007]报表统计

    哈哈set卡时过了. set求前驱的方法:*--b.lower_bound(x) (想想写了splay的肉老师就很愉悦啊) 弄两个set,一个记录的是位置的值,一个是差值,MIN_SORT_GAP就很 ...

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

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

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

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

  5. bzoj 1058: [ZJOI2007]报表统计(set+multiset)

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

  6. bzoj 1058: [ZJOI2007]报表统计

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

  7. P1110 [ZJOI2007]报表统计

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

  8. [ZJOI2007]报表统计(链表法+set)

    problem 洛谷链接 solution 纯纯不理解要搬用平衡树的那些做法,使我们可可爱爱的链表不香不好写吗?? 众所周知,链表法是可以进行删除和增加的,只需要维护每个点的前驱和后继. 相邻两个的差 ...

  9. Luogu P1110 [ZJOI2007]报表统计 multiset

    沿用了学长的$multiset$ 然后这道题可以看到我的程序中有两行注释,它在我看来和他们下面的代码没区别,但是我们发现,C++会先调用后面的参数,所以$--it$会被先执行 ... ... ... ...

最新文章

  1. php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php
  2. 做权限认证,还不了解IdentityServer4?不二话,赶紧拥抱吧,.NET Core官方推荐!...
  3. 老李分享:基于图像识别的跨平台的手机自动化测试方案
  4. 流媒体服务器主板型号怎么看,关于服务器的详解
  5. storm - 常用命令
  6. 【SQL】查询数据库中某个字段有重复值出现的信息
  7. JPasswordField密码框,JList列表框
  8. Atitit。sql2016标准化的规划方案 v3 q2a
  9. 《计算机网络》谢希仁第七版课后答案完整版
  10. 福尔曼大学计算机排名,留学选校指南|纽约时报2019美国精英群体认可的大学榜单Top50...
  11. 解决关于VS无法加载解决方案中的项目的问题
  12. 《MySQL必知必会》的读后感
  13. 美国ZIPnbsp;Codenbsp;一览表
  14. loss.item()大坑
  15. Dragon之LoginServer
  16. istio-code
  17. 什么时间锻炼身体最佳?
  18. 【从零到蓝桥杯省一】算法详解之深度优先搜索
  19. 计算机毕业设计 SSM超市收银管理系统 便利店收银管理系统 酒吧收银管理系统 酒店收银系统Java Vue MySQL数据库 远程调试 代码讲解
  20. 笔记本的维修实例(转)

热门文章

  1. Java学习笔记45:Java 线程与主线程之间的变量关系
  2. JQuery 基础:8.节点操作
  3. DirectX903D 颜色
  4. html5网页怎么实现内容追加,纯js实现网页内容复制后自动追加自定义内容
  5. 自走棋电脑版_2019年的爆款自走棋玩法,百花齐放过后,却身陷“变现烦恼”...
  6. 华科计算机学院多难考,计算机学院2019年硕士研究生入学考试成绩公告
  7. linux lab命令,Linux lab 命令
  8. java固定资产管理系统代码_Java 固定资产管理系统(课程设计)
  9. js 刷新页面但是不闪烁_前端开发还在手动刷新页面?手把手教你搭建一个自动刷新工具...
  10. c3p0连接池配置_Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统