沿用了学长的$multiset$

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

。。。

。。。

。。。

维护两个数组,$a[]$和$b[]$表示每一段开头的元素和结尾的元素。

在更新相邻差值的时候,只用考虑新插入的值和原结尾的差以及和下一段开头的差就好了。

维护两个$multiset<int>ele,del$ 表示全部元素和表示全部差值 。

插入新元素的时候,我们把他在$ele$中找到前驱后继分别作差,来更新排序最小差。

然后在del中删除现在本段结尾与下一段开头的差,插入新结尾与当前本段结尾的差和新值与下一段开头的差。

#include<cstdio>
#include<iostream>
#include<set>
#include<cmath>
#include<cstring>
#define R register int
using namespace std;
const int Inf=0x3f3f3f3f,N=;
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
int n,m,a[N],b[N],ans=Inf;
multiset<int> del,ele;
multiset<int>::iterator it;
signed main() {
n=g(),m=g(); ele.insert(Inf),ele.insert(-Inf);
for(R i=;i<=n;++i) {
a[i]=g(); it=ele.lower_bound(a[i]);
//ans=min(ans,min(*it-a[i],a[i]-*--it));
ans=min(ans,*it-a[i]); ans=min(ans,a[i]-*--it);
ele.insert(a[i]);
} memcpy(b,a,sizeof(int)*(n+)); for(R i=;i<=n;++i) del.insert(abs(a[i]-a[i-]));
for(R i=;i<=m;++i) { register char s[]; scanf("%s",s);
if(s[]=='R') {
R p=g(),vl=g();
del.erase(del.find(abs(b[p]-a[p+])));
del.insert(abs(vl-b[p])),del.insert(abs(vl-a[p+])); b[p]=vl;
it=ele.lower_bound(vl);
//ans=min(ans,min(vl-*it,vl-*--it));
ans=min(ans,*it-vl); ans=min(ans,vl-*--it);
ele.insert(vl);
} else if(s[]=='G') printf("%d\n",*del.begin());
else printf("%d\n",ans);
}
}

2019.07.11

最新文章

  1. C++ std::forward_list
  2. webgl巧妙方式写着色器代码
  3. 【Linux学习】Linux操作技巧
  4. 解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后丢失的问题
  5. JavaScript中的继承(原型链)
  6. Windows 10 上强制Visual Studio以管理员身份运行
  7. Hibernate一对一单向外键关联
  8. hdu 1560 DNA sequence(搜索)
  9. date 、cal、bc
  10. U - 神、上帝以及老天爷(第二季水)
  11. LeetCode总结 -- 高精度篇
  12. CentOS yum升级GCC到4.8
  13. Servlet程序
  14. 数组Array、数组API
  15. 设置linux虚拟机的固定ip、防火墙的一些操作
  16. Bootstrap常用样板
  17. Leetcode(三)无重复字符的最长子串
  18. fullcalendar 日历插件3.9.0 -- 基本插件使用
  19. centos6 防火墙iptables操作整理
  20. JDK的get请求方式

热门文章

  1. 2.4容错保护:Hystrix
  2. 洛谷 P4198 楼房重建 线段树维护单调栈
  3. Django 在Python3.5 下报 没有模块MySQLdb
  4. Linux 多命令语句与重定向
  5. cmd设置电脑自动关机
  6. python 利用pyttsx3文字转语音(转)
  7. IDEA GIT 忽略文件
  8. 【Distributed】分布式Session一致性问题
  9. 第七章、Ajango自带auth模块
  10. Redis汇总