传送门

sb题。

直接用两个multisetmultisetmultiset维护相邻两个数的差值和所有数的前驱后继。

插入一个数的时候更新一下就行了。

代码:

#include<bits/stdc++.h>
using namespace std;
inline int read(){
    int ans=0,w=1;
    char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans*w;
}
const int N=5e5+5,inf=1e9+5e8;
int n,m,a[N],ans=inf,hd[N],tl[N];
multiset<int>T,R;
int main(){
    n=read(),m=read(),T.insert(-inf),T.insert(inf);
    for(int i=1;i<=n;++i){
        hd[i]=tl[i]=a[i]=read();
        T.insert(a[i]);
        multiset<int>::iterator it=T.find(a[i]);
        --it,ans=min(ans,a[i]-(*it)),++it;
        ++it,ans=min(ans,(*it)-a[i]),--it;
    }
    for(int i=1;i<n;++i)R.insert(abs(a[i]-a[i+1]));
    while(m--){
        char s[10];
        int x,y;
        scanf("%s",s);
        if(s[0]=='I'){
            x=read(),y=read(),T.insert(y);
            multiset<int>::iterator it=T.find(y);
            --it,ans=min(ans,y-(*it)),++it;
            ++it,ans=min(ans,(*it)-y),--it;
            if(x^n)R.erase(R.find(abs(hd[x+1]-tl[x]))),R.insert(abs(hd[x+1]-y));
            R.insert(abs(tl[x]-y)),tl[x]=y;
        }
        else if(s[4]=='G')printf("%d\n",*R.begin());
        else printf("%d\n",ans);
    }
    return 0;
}

2018.11.09 洛谷P1110 [ZJOI2007]报表统计(multiset)的更多相关文章

  1. 洛谷 P1110 [ZJOI2007]报表统计 解题报告

    P1110 [ZJOI2007]报表统计 题目描述 \(Q\)的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小\(Q\)希望可以帮妈妈分担一些工作,作为她的生日礼物之一. 经过仔细 ...

  2. 洛谷.1110.[ZJOI2007]报表统计(Multiset Heap)

    题目链接 主要思路 /* 对于询问1,用堆代替multiset/Splay 对于询问2,multiset 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个 ...

  3. 洛谷.1110.[ZJOI2007]报表统计(Multiset)

    题目链接 主要思路 /* 其实只需要multiset即可 对于询问1,删除.插入差值,输出最小元素 对于询问2,插入后用前驱后继更新 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一 ...

  4. BZOJ1058或洛谷1110 [ZJOI2007]报表统计

    BZOJ原题链接 洛谷原题链接 STL 本题可以直接使用\(\mathtt{STL\ multiset}\)水过去. 因为本题插入数的操作实际上就是将原数列分为\(n\)段,在每一段的末尾插入数,所以 ...

  5. 洛谷.1110.[ZJOI2007]报表统计(Splay Heap)

    题目链接 附纯SplayTLE代码及主要思路: /* 可以看做序列有n段,Insert是每次在每一段最后插入一个元素 只有插入,没有删除,所以插入一个元素对于询问1影响的只有该元素与前边一个元素(同段 ...

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

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

  7. 2018.11.06 洛谷P1099 树网的核(最短路+枚举)

    传送门 之前看李煜东的书一直感觉是道神题. 然后发现这题数据范围只有300?300?300? 直接上floydfloydfloyd然后暴力就完了啊. 代码: #include<bits/stdc ...

  8. 2018.11.06 洛谷P1941 飞扬的小鸟(背包)

    传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...

  9. 2018.11.04 洛谷P2679 子串(线性dp)

    传送门 为什么前几年的noipnoipnoip总是出这种送分题啊? 这个直接线性dpdpdp不就完了吗? f[i][j][k][0/1]f[i][j][k][0/1]f[i][j][k][0/1]表示 ...

随机推荐

  1. 明明白白你的Linux服务器——日志篇

    日志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹.日志主要的功能有:审计和监测.他还可以实时的监测系统状态,监测和追踪 ...

  2. css定位研究

    css的定位是很重要的一个知识点,要学会网页布局,一定要先把定位弄清楚,今天抽空整理一下这方面的知识. 1.块级元素和行内元素(内联元素) 块级元素:display值为block的元素就是块级元素,比 ...

  3. Tomcat登陆mysql的密码设置

    在登陆mysql的密码和数据库密码不一致时,可以修改Mysql数据库密码或者修改连接Mysql的配置文件:  1.修改连接Tomcat里连接Mysql的配置文件 需要修改两个配置文件 ,一个是在tom ...

  4. javascript 的原型与原型链的理解

    javascript中一切皆对象,但是由于没有Class类的概念,所以就无法很好的表达对象与对象之间的关系了. 比如对象A与对象B之间,它们两个是相对独立的个体,互不干扰,对象A修改自身的属性不会影响 ...

  5. Task.WaitAll代替WaitHandle.WaitAll

    Task.Waitall阻塞了当前线程直到全完.whenall开启个新监控线程去判读括号里的所有线程执行情况并立即返回,等都完成了就退出监控线程并返回监控数据. task.Result会等待异步方法返 ...

  6. vue 环境搭建

    目前我们的项目前端都采用的是vue js为了方便开发过程中前后端同事进行功能对接,建议每个同事都准备好前后端环境(前端的同事参考文档第二部分,后端同事请参考第一部分),只要保持前后端代码是最新的就可以 ...

  7. 关于opencv中的颜色模型转换之CV_BGR2HSV

    1.opencv函数cvCvtColor(rgb_im,hsv_im,CV_BGR2HSV)中使用的RGB颜色空间转到HSV算法: max=max(R,G,B) min=min(R,G,B) if R ...

  8. Github上删除仓库

    1.先进入到工程里面,然后选择“Settings” 2.将页面拉到最下面,然后点击“Delete this repository”,接着在弹出的窗口中输入需要删除的仓库名. 弹出的窗口如下:

  9. iOS.OpenSource.PopularProject

    1. Core Plot Core Plot is a plotting framework for OS X and iOS. It provides 2D visualization of dat ...

  10. 轻博客类Web原型制作分享——Tumblr

    Tumblr(汤博乐)成立于2007年,是目前全球最大的轻博客网站,也是轻博客网站的始祖. Tumblr是一种介于传统博客和微博之间的全新媒体形态,既注重表达,又注重社交,而且注重个性化设置,成为当前 ...