我想写FHQtreap的!是set自己跑进代码的!因为太好写了

是有点慢……洛谷上不吸氧会T一个点

就是,用一个set p维护所有点值,ans维护MIN_SORT_GAP的答案,每次insert一个点的时候都查一下它在p里的前驱后继,更新一下ans即可;用一个multiset c维护差分后的序列,a[i]表示第i个位置的开头数字,b[i]表示结尾数字,每次在x位置新插入值v的时候都要c.erase(c.find(abs(a[x+1]-b[x]))),c.insert(abs(a[x+1]-v)),c.insert(abs(v-b[x]))(这个应该很好理解)然后查询的时候直接找begin即可

差分的时候注意一下边界

想要快的话大概是线段树+树上二分代替p,平衡树代替set?

#include<iostream>
#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
const int N=500005;
int n,m,a[N],b[N],ans=1e9;
char o[20];
set<int>p;
multiset<int>c;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
{
a[i]=b[i]=read();
if(i>1)
{
c.insert(abs(a[i]-a[i-1]));
set<int>::iterator it=p.lower_bound(a[i]);
if(it!=p.end())
ans=min(ans,(*it)-a[i]);//,cerr<<a[i]<<" "<<*it<<endl;
if(it!=p.begin())
ans=min(ans,a[i]-(*--it));
}
p.insert(a[i]);
}
while(m--)
{
scanf("%s",o+1);
if(o[1]=='I')
{
int x=read(),v=read();
set<int>::iterator it=p.lower_bound(v);
if(it!=p.end())
ans=min(ans,(*it)-v);
if(it!=p.begin())
ans=min(ans,v-(*--it));
p.insert(v);
if(x<n)
c.erase(c.find(abs(a[x+1]-b[x]))),c.insert(abs(a[x+1]-v));
c.insert(abs(v-b[x]));
b[x]=v;
}
else if(o[5]=='G')
printf("%d\n",*c.begin());
else
printf("%d\n",ans);
}
return 0;
}

最新文章

  1. HDU 4059 容斥初步练习
  2. 自己动手模拟百分百&lt;select&gt;下拉列表
  3. rcp(插件开发)The type XXX cannot be resolved. It is indirectly referenced from required .class files解决办法
  4. MYSQL 专家 ----zhaiwx_yinfeng
  5. winserver2008下创建计划任务注意点
  6. 浅谈DevExpress&lt;二&gt;:设计一个完整界面(1)
  7. Python之生产者&amp;、消费者模型
  8. hdu 3966 Aragorn&#39;s Story(树链剖分+树状数组/线段树)
  9. Linux安装pytorch的具体过程以及其中出现问题的解决办法
  10. ABP官方文档翻译 6.4 导航
  11. linux学习之路--(六)用户及权限详解
  12. 连不上虚拟机中的Redis的原因分析、以及虚拟机网络配置
  13. docker实战---初级&lt;1&gt;
  14. hadoop过程中遇到的错误与解决方法
  15. vue生命周期-mounted和created的区别
  16. Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project Resource: Cannot invoke Tomcat manager: Connection refused: connect -&gt; [Help 1]
  17. ThinkingInJava 学习 之 0000005 访问权限控制
  18. 利用WCF实现上传下载文件服务
  19. .gitignore文件规则不起效的解决办法
  20. 多数据源报错 expected single matching bean but found 2: xxx,xxx

热门文章

  1. Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor
  2. unity常见问题之20题
  3. TinyXML的使用
  4. 使用POCO发送HTTP(S)请求
  5. 计算(!(~+[])+{})[--[~+&quot;&quot;][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
  6. 主线程 view
  7. SQL Server 数据库备份策略,第一周运行失败的原因
  8. Java虚拟机一览表
  9. Android多国语言文件夹汇总
  10. windows下安装composer流程