zoukankan      html  css  js  c++  java
  • LibreOJ β Round #2 C

    题链

    我们发现答案一直在减小,我们启发式合并,对每一个值开平衡树。那么是O(NlogN^2)

    然而,我懒得写离散化了,所以MAP,莫名多一个log

    大家要知道 LOJ 是非常快的~

    无力吐槽。

    #pragma GCC optimize("-O2")
    #include<bits/stdc++.h>
    #define getchar nc
    #define min(a,b) ((a)<(b)?(a):(b))
    #define max(a,b) ((a)>(b)?(a):(b))
    #define sight(c) ('0'<=c&&c<='9')
    #define LL long long
    #define N 100073
    #define deg printf
    #define dput put
    #define dputc putchar
    #define db double 
    #define eho(x) for(int i=head[x];i;i=net[i])
    #define iter set<int>::iterator
    inline char nc(){
    static char buf[1000000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++;
    }
    inline void read(int &x){
        static char c;
        for (c=getchar();!sight(c);c=getchar());
        for (x=0;sight(c);c=getchar())x=x*10+c-48;
    }
    void write(int x){if (x<10) {putchar('0'+x); return;} write(x/10); putchar('0'+x%10);}
    inline void writeln(int x){ if (x<0) putchar('-'),x*=-1; write(x); putchar('
    '); }
    inline void writel(int x){ if (x<0) putchar('-'),x*=-1; write(x); putchar(' '); }
    using namespace std;
    map<int,set<int>>mp;
    int n,m,ans=2147483647,x,y;
    void update(int x, int y) {
        iter it = mp[x].lower_bound(y);
        if(it != mp[x].end()) ans = min(ans, *it-y);
        if(it != mp[x].begin()) it--, ans = min(ans, y-*it);
        mp[x].insert(y);
    }
    int main(){
        // freopen("c.in","r",stdin);
        read(n),read(m);
        for(int i=1;i<=n;i++) read(x),update(x,i);
        for(int i=1;i<=m;i++){
            if(ans==1) {writeln(1);continue;}
            read(x),read(y);
            if(x==y) writeln(ans);
            else{
                if(mp[x].size()>mp[y].size()) swap(mp[x],mp[y]);
                for(iter it=mp[x].begin();it!=mp[x].end();it++)
                    update(y,*it); 
                mp[x].clear();
                 writeln(ans);
            }
        }
    }
  • 相关阅读:
    Oracle数据库中。varchar 和 varchar2的区别
    gvim 编辑器初学
    鼠标事件以及clientX、offsetX、screenX、pageX、x的区别
    清除浮动的5种方法
    按钮的单双击事件
    webstrom中的快捷键
    限制 input 输入框只能输入纯数字
    控制<标签>不可被点击
    way.js
    ECharts 折线图and柱状图
  • 原文地址:https://www.cnblogs.com/rrsb/p/8330826.html
Copyright © 2011-2022 走看看