zoukankan      html  css  js  c++  java
  • bzoj3685 普通van Emde Boas树

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3685

    【题解】

    写个set+fread即可。

    # include <set>
    # include <stdio.h>
    # include <string.h>
    # include <iostream>
    # include <algorithm>
    // # include <bits/stdc++.h>
    
    using namespace std;
    
    typedef long long ll;
    typedef long double ld;
    typedef unsigned long long ull;
    const int M = 5e5 + 10;
    const int mod = 1e9+7;
    
    # define RG register
    # define ST static
    
    namespace FIFO {
        char ch,B[1<<20],*S=B,*T=B;
        #define getc() (S==T&&(T=(S=B)+fread(B,1,1<<20,stdin),S==T)?0:*S++)
        #define isd(c) (c>='0'&&c<='9')
        int aa,bb;int F(){
            while(ch=getc(),!isd(ch)&&ch!='-');ch=='-'?aa=bb=0:(aa=ch-'0',bb=1);
            while(ch=getc(),isd(ch))aa=aa*10+ch-'0';return bb?aa:-aa;
        }
    }
    #define gi FIFO::F()
    #define BUFSIZE 5000000
    namespace fob {char b[BUFSIZE]={},*f=b,*g=b+BUFSIZE-2;}
    #define pob (fwrite(fob::b,sizeof(char),fob::f-fob::b,stdout),fob::f=fob::b,0)
    #define pc(x) (*(fob::f++)=(x),(fob::f==fob::g)?pob:0)
    struct foce {~foce() {pob; fflush(stdout);}} _foce;
    namespace ib {char b[100];}
    inline void pint(int x)
    {
        if(x==0) {pc(48); return;}
        if(x<0) {pc('-'); x=-x;} //如果有负数就加上 
        char *s=ib::b;
        while(x) *(++s)=x%10, x/=10;
        while(s!=ib::b) pc((*(s--))+48);
    }
    
    int n, m;
    set<int> s;
    set<int>::iterator it;
    
    int main() { 
        int opt, x;
        n = gi, m = gi;
        while(m--) {
            opt = gi;
            if(opt == 1) {
                x = gi;
                s.insert(x);
            }
            if(opt == 2) {
                x = gi;
                it = s.find(x);
                if(it != s.end()) s.erase(it);
            }
            if(opt == 3) {
                if(s.size() == 0) pint(-1); 
                else pint(*s.begin());
                pc(10); 
            }
            if(opt == 4) {
                if(s.size() == 0) pint(-1); 
                else pint(*--s.end());
                pc(10); 
            }
            if(opt == 5) {
                x = gi;
                it = s.lower_bound(x);
                if(it == s.begin()) pint(-1); 
                else pint(*--it);
                pc(10); 
            }
            if(opt == 6) {
                x = gi;
                it = s.upper_bound(x); 
                if(it == s.end()) pint(-1); 
                else pint(*it);
                pc(10); 
            }
            if(opt == 7) {
                x = gi;
                it = s.find(x); 
                if(it != s.end()) pint(1); 
                else pint(-1);
                pc(10); 
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Mac 键盘快捷键
    行业分析
    大数据导航
    SQL循环语句 详解
    SQL中使用循环结构
    常用 git 基础命令
    最近众包-有意思
    薪酬体系设计
    海氏评估法
    原则类
  • 原文地址:https://www.cnblogs.com/galaxies/p/bzoj3685.html
Copyright © 2011-2022 走看看